X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fdeluxe.c;h=75b9832900956d7d6369d2fbbe3bb87e997e3840;hb=96a411663168b0ba5432b407a83be55f3df0c802;hp=458d94ab4589458ae0ea9a18a84f5535b4f4b5aa;hpb=df7adbee81405e2849728a24b498ad2117784b1f;p=xscreensaver diff --git a/hacks/deluxe.c b/hacks/deluxe.c index 458d94ab..75b98329 100644 --- a/hacks/deluxe.c +++ b/hacks/deluxe.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1999 Jamie Zawinski +/* xscreensaver, Copyright (c) 1999, 2001, 2002 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 @@ -222,6 +222,7 @@ char *defaults [] = { "*doubleBuffer: True", #ifdef HAVE_DOUBLE_BUFFER_EXTENSION "*useDBE: True", + "*useDBEClear: True", #endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ 0 }; @@ -246,7 +247,8 @@ screenhack (Display *dpy, Window window) int delay = get_integer_resource ("delay", "Integer"); int ncolors = get_integer_resource ("ncolors", "Integer"); Bool dbuf = get_boolean_resource ("doubleBuffer", "Boolean"); - XColor colors[255]; + Bool dbeclear_p = get_boolean_resource ("useDBEClear", "Boolean"); + XColor *colors = 0; XGCValues gcv; GC erase_gc = 0; int i; @@ -261,6 +263,8 @@ screenhack (Display *dpy, Window window) transparent_p = get_boolean_resource("transparent", "Transparent"); + colors = (XColor *) calloc (sizeof(*colors), ncolors); + if (get_boolean_resource("mono", "Boolean")) { MONO: @@ -298,7 +302,11 @@ screenhack (Display *dpy, Window window) if (dbuf) { #ifdef HAVE_DOUBLE_BUFFER_EXTENSION - b = backb = xdbe_get_backbuffer (dpy, window, XdbeUndefined); + if (dbeclear_p) + b = xdbe_get_backbuffer (dpy, window, XdbeBackground); + else + b = xdbe_get_backbuffer (dpy, window, XdbeUndefined); + backb = b; #endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ if (!b) @@ -327,7 +335,12 @@ screenhack (Display *dpy, Window window) while (1) { - XFillRectangle (dpy, b, erase_gc, 0, 0, xgwa.width, xgwa.height); + if (!dbeclear_p +#ifdef HAVE_DOUBLE_BUFFER_EXTENSION + || !backb +#endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ + ) + XFillRectangle (dpy, b, erase_gc, 0, 0, xgwa.width, xgwa.height); for (i = 0; i < count; i++) if (throb (dpy, b, throbbers[i]) < 0) @@ -339,7 +352,7 @@ screenhack (Display *dpy, Window window) { XdbeSwapInfo info[1]; info[0].swap_window = window; - info[0].swap_action = XdbeUndefined; + info[0].swap_action = (dbeclear_p ? XdbeBackground : XdbeUndefined); XdbeSwapBuffers (dpy, info, 1); } else