X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fqix.c;h=44c85ec3051d24aac5aaf43a3c9d5ee25b2d3d4e;hb=06e9a7886a77cad92f9ddbc169d6d199a4d8b76d;hp=f2898f1ccff452b9e057b9368849af792b5d5ed4;hpb=0bd2eabab3e404c6769fe8f59b639275e960c415;p=xscreensaver diff --git a/hacks/qix.c b/hacks/qix.c index f2898f1c..44c85ec3 100644 --- a/hacks/qix.c +++ b/hacks/qix.c @@ -1,5 +1,5 @@ -/* xscreensaver, Copyright (c) 1992, 1995, 1996, 1997 - * Jamie Zawinski +/* xscreensaver, Copyright (c) 1992, 1995, 1996, 1997, 1998 + * Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -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); } }