X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fceltic.c;h=6ce4e7074dadb899a8a2e9e749d11c1c33d1bd72;hb=d1ae2829ff0fd2a96c16a0c8c5420efaa47d7b30;hp=0bf241c2285599b3b6591c7eb45fdd7c43a4c344;hpb=4ade52359b6eba3621566dac79793a33aa4c915f;p=xscreensaver diff --git a/hacks/celtic.c b/hacks/celtic.c index 0bf241c2..6ce4e707 100644 --- a/hacks/celtic.c +++ b/hacks/celtic.c @@ -85,7 +85,7 @@ struct state { Graph graph; XWindowAttributes xgwa; int delay2; - int reset; + int reset, force_reset; double t; struct params params; @@ -972,10 +972,15 @@ celtic_draw (Display *dpy, Window window, void *closure) return 10000; } - if (st->reset) { + if (st->reset || st->force_reset) { + int delay = (st->force_reset ? 0 : st->delay2); st->reset = 0; + st->force_reset = 0; + st->t = 1; - pattern_del(st->pattern); + if (st->pattern != NULL) { + pattern_del(st->pattern); + } st->pattern = NULL; graph_del(st->graph); @@ -986,7 +991,7 @@ celtic_draw (Display *dpy, Window window, void *closure) st->colors, &st->ncolors, True, 0, True); st->eraser = erase_window (st->dpy, st->window, st->eraser); - return st->delay2; + return (delay); } if (st->pattern == NULL) { @@ -1105,6 +1110,12 @@ celtic_reshape (Display *dpy, Window window, void *closure, static Bool celtic_event (Display *dpy, Window window, void *closure, XEvent *event) { + struct state *st = (struct state *) closure; + if (screenhack_event_helper (dpy, window, event)) + { + st->force_reset = 1; + return True; + } return False; }