X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Ffireworkx.c;fp=hacks%2Ffireworkx.c;h=db1c8d8168a658096cea796f3b7b18603f59de57;hp=11bc5e5b478c3755443ed12437dcfe22da1ef17f;hb=d1ae2829ff0fd2a96c16a0c8c5420efaa47d7b30;hpb=7edd66e6bd3209013ee059819747b10b5835635b diff --git a/hacks/fireworkx.c b/hacks/fireworkx.c index 11bc5e5b..db1c8d81 100644 --- a/hacks/fireworkx.c +++ b/hacks/fireworkx.c @@ -100,6 +100,9 @@ struct state int depth; int bigendian; int ncolors; + Bool button_down_p; + int deferred; + }; /* @@ -777,11 +780,19 @@ fireworkx_draw (Display *dpy, Window win, void *closure) { if (!explode(st, fs)) { - recycle(st, fs, rnd(st->width), rnd(st->height)); + if (st->button_down_p) + st->deferred++; + else + recycle(st, fs, rnd(st->width), rnd(st->height)); } } } + while (!st->button_down_p && st->deferred) { + st->deferred--; + recycle_oldest(st, rnd(st->width), rnd(st->height)); + } + glow_blur(st); if (st->flash_on) @@ -810,8 +821,15 @@ fireworkx_event (Display *dpy, Window window, void *closure, XEvent *event) if (event->type == ButtonPress) { recycle_oldest(st, event->xbutton.x, event->xbutton.y); + st->button_down_p = True; + return True; + } + else if (event->type == ButtonRelease) + { + st->button_down_p = False; return True; } + return False; }