#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
