#ifndef UNSUPPORTED
static void do_starfield(void *data, struct taskinfo */*task*/, int r1, int r2)
{
    struct filter *f = (struct filter *)data;
    cpixel_t *dest;
    pixel8_t *src, *srcend;
    unsigned int color;
    int y;
    cpixeldata_t black = (cpixeldata_t)f->image->palette->pixels[0];
    mysrandom((unsigned int)rand());
    for (y = r1; y < r2; y++) {
        src = f->childimage->currlines[y];
        srcend = f->childimage->currlines[y] + f->childimage->width;
        dest = (cpixel_t *)f->image->currlines[y];
        while (src < srcend) {
            color = ((unsigned int)myrandom() >> 7) & 15;
            if (!*src ||
                (unsigned int)*src * (unsigned int)*src * (unsigned int)*src >
                    (unsigned int)((unsigned int)myrandom() & (0xffffff))) {
                p_set(dest, (cpixeldata_t)f->image->palette->pixels[color]);
            } else
                p_set(dest, black);
            p_inc(dest, 1);
            src++;
        }
    }
}
#endif
#undef do_starfield
