X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fqix.c;h=44c85ec3051d24aac5aaf43a3c9d5ee25b2d3d4e;hb=585e1a6717d1dd9b90fbb53acaaae82106354d33;hp=c19f3bc6a33f9cd5e4f5f40438188739fefef91b;hpb=ce3185de9d9705e259f2b60dd4b5509007fa17d4;p=xscreensaver diff --git a/hacks/qix.c b/hacks/qix.c index c19f3bc6..44c85ec3 100644 --- a/hacks/qix.c +++ b/hacks/qix.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1992, 1995, 1996, 1997 +/* xscreensaver, Copyright (c) 1992, 1995, 1996, 1997, 1998 * Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its @@ -45,6 +45,9 @@ static int delay; static int count; static Colormap cmap; static int npoly; +static Bool additive_p; +static Bool cmap_p; + static GC *gcs[2]; @@ -192,15 +195,18 @@ init_qix (Display *dpy, Window window) gcv.foreground = default_fg_pixel = get_pixel_resource ("foreground", "Foreground", dpy, cmap); + additive_p = get_boolean_resource ("additive", "Boolean"); + cmap_p = has_writable_cells (xgwa.screen, xgwa.visual); + if (transparent_p) { - Bool additive_p = get_boolean_resource ("additive", "Boolean"); unsigned long *plane_masks = 0; unsigned long base_pixel; int nplanes = count; int i; - allocate_alpha_colors (dpy, cmap, &nplanes, additive_p, &plane_masks, + allocate_alpha_colors (xgwa.screen, xgwa.visual, cmap, + &nplanes, additive_p, &plane_masks, &base_pixel); if (nplanes <= 1) @@ -230,6 +236,12 @@ init_qix (Display *dpy, Window window) { gcv.plane_mask = plane_masks [i]; gcv.foreground = ~0; + +/* argh, I'm not sure how to make "-subtractive" work in truecolor... + if (!cmap_p && !additive_p) + gcv.function = GXclear; + */ + if (xor_p) { gcv.function = GXxor; @@ -504,7 +516,8 @@ screenhack (Display *dpy, Window window) for (qn = q1; *qn; qn++) { qix1 (dpy, window, *qn); - XSync (dpy, True); + XSync (dpy, False); + screenhack_handle_events (dpy); if (delay) usleep (delay); } }