X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=hacks%2Fceltic.c;h=890b3982a96d6a2b98c5c0d6bf3665e64b425802;hb=d6b0217f2417bd19187f0ebc389d6c5c2233b11c;hp=0bf241c2285599b3b6591c7eb45fdd7c43a4c344;hpb=4ade52359b6eba3621566dac79793a33aa4c915f;p=xscreensaver diff --git a/hacks/celtic.c b/hacks/celtic.c index 0bf241c2..890b3982 100644 --- a/hacks/celtic.c +++ b/hacks/celtic.c @@ -14,11 +14,12 @@ */ #include -#include #include "screenhack.h" #include "erase.h" #define SQRT_3 1.73205080756887729352 +#undef assert +#define assert(EXP) do { if (!((EXP))) abort(); } while(0) /*-----------------------------------------*/ @@ -85,7 +86,7 @@ struct state { Graph graph; XWindowAttributes xgwa; int delay2; - int reset; + int reset, force_reset; double t; struct params params; @@ -838,7 +839,7 @@ static const char *celtic_defaults[] = { "*delay: 10000", "*delay2: 5", "*showGraph: False", -#ifdef USE_IPHONE +#ifdef HAVE_MOBILE "*ignoreRotation: True", #endif 0 @@ -972,10 +973,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 +992,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 +1111,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; }