--- xscreensaver-5.00a9/hacks/coral.c Sat Mar 4 00:17:54 2006 +++ xscreensaver-5.00a9-hacked/hacks/coral.c Thu Mar 9 15:14:26 2006 @@ -186,12 +186,6 @@ st->colorindex = 0; XSetForeground(st->dpy, st->draw_gc, st->colors[st->colorindex].pixel); } - - if( 0 == st->nwalkers ) { - XSync(st->dpy, False); - free(st->pointbuf); - st->done = 1; - } } else { /* move it a notch */ do { @@ -219,22 +213,7 @@ } } - if (st->done) { - st->done = 0; - st->npoints = 0; - - if (st->delay2 > 0) { - if (st->npoints > 0) { - XDrawPoints(st->dpy, st->window, st->draw_gc, st->pointbuf, st->npoints, - CoordModeOrigin); - st->npoints = 0; - XSync(st->dpy, False); - } - } - return 2; - } - - return 0; + return (0 == st->nwalkers); } static void * @@ -259,19 +238,18 @@ { struct state *st = (struct state *) closure; - if (st->eraser) + if (st->eraser || st->done) { + st->done = 0; st->eraser = erase_window (st->dpy, st->window, st->eraser); return st->delay2; } if (st->reset) init_coral(st); - st->reset = coral(st); - if (st->reset) - st->eraser = erase_window (st->dpy, st->window, st->eraser); + st->reset = st->done = coral(st); - return (st->done && !st->eraser + return (st->reset ? (st->delay * 1000000) : st->delay2); } @@ -292,6 +270,9 @@ coral_free (Display *dpy, Window window, void *closure) { struct state *st = (struct state *) closure; + free (st->pointbuf); + if (st->walkers) free (st->walkers); + if (st->board) free (st->board); free (st); }