-/* xscreensaver, Copyright (c) 1992-2002 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1992-2003 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
static void fade_screens_1 (Display *dpy, Colormap *cmaps,
- Window *black_windows, int seconds, int ticks,
+ Window *black_windows, int nwindows,
+ int seconds, int ticks,
Bool out_p, Bool clear_windows);
#ifdef HAVE_SGI_VC_EXTENSION
static int sgi_gamma_fade (Display *dpy,
- Window *black_windows, int seconds, int ticks,
+ Window *black_windows, int nwindows,
+ int seconds, int ticks,
Bool out_p, Bool clear_windows);
#endif /* HAVE_SGI_VC_EXTENSION */
#ifdef HAVE_XF86VMODE_GAMMA
static int xf86_gamma_fade (Display *dpy,
- Window *black_windows, int seconds, int ticks,
+ Window *black_windows, int nwindows,
+ int seconds, int ticks,
Bool out_p, Bool clear_windows);
#endif /* HAVE_XF86VMODE_GAMMA */
void
-fade_screens (Display *dpy, Colormap *cmaps, Window *black_windows,
+fade_screens (Display *dpy, Colormap *cmaps,
+ Window *black_windows, int nwindows,
int seconds, int ticks,
Bool out_p, Bool clear_windows)
{
#ifdef HAVE_SGI_VC_EXTENSION
/* First try to do it by fading the gamma in an SGI-specific way... */
- if (0 == sgi_gamma_fade(dpy, black_windows, seconds, ticks, out_p,
+ if (0 == sgi_gamma_fade(dpy, black_windows, nwindows,
+ seconds, ticks, out_p,
clear_windows))
;
else
#ifdef HAVE_XF86VMODE_GAMMA
/* Then try to do it by fading the gamma in an XFree86-specific way... */
- if (0 == xf86_gamma_fade(dpy, black_windows, seconds, ticks, out_p,
+ if (0 == xf86_gamma_fade(dpy, black_windows, nwindows,
+ seconds, ticks, out_p,
clear_windows))
;
else
/* Else, do it the old-fashioned way, which (somewhat) loses if
there are TrueColor windows visible. */
- fade_screens_1 (dpy, cmaps, black_windows, seconds, ticks,
+ fade_screens_1 (dpy, cmaps, black_windows, nwindows,
+ seconds, ticks,
out_p, clear_windows);
/* If we were supposed to be fading in, do so now (we just faded out,
what is implemented in sgi_gamma_fade(), so we use that if we can.
*/
static void
-fade_screens_1 (Display *dpy, Colormap *cmaps, Window *black_windows,
+fade_screens_1 (Display *dpy, Colormap *cmaps,
+ Window *black_windows, int nwindows,
int seconds, int ticks,
Bool out_p, Bool clear_windows)
{
installed = True;
if (black_windows && !out_p)
- for (j = 0; j < nscreens; j++)
+ for (j = 0; j < nwindows; j++)
if (black_windows[j])
{
XUnmapWindow (dpy, black_windows[j]);
*/
if (out_p && black_windows)
{
- for (i = 0; i < nscreens; i++)
+ for (i = 0; i < nwindows; i++)
{
if (clear_windows)
XClearWindow (dpy, black_windows[i]);
static int
sgi_gamma_fade (Display *dpy,
- Window *black_windows, int seconds, int ticks,
+ Window *black_windows, int nwindows,
+ int seconds, int ticks,
Bool out_p, Bool clear_windows)
{
int steps = seconds * ticks;
way down to 0, then take the windows off the screen.
*/
if (!out_p)
- for (screen = 0; screen < nscreens; screen++)
- {
+ {
+ for (screen = 0; screen < nscreens; screen++)
sgi_whack_gamma(dpy, screen, &info[screen], 0.0);
+
+ for (screen = 0; screen < nwindows; screen++)
if (black_windows && black_windows[screen])
{
XUnmapWindow (dpy, black_windows[screen]);
XClearWindow (dpy, black_windows[screen]);
XSync(dpy, False);
}
- }
-
+ }
/* Iterate by steps of the animation... */
for (i = (out_p ? steps : 0);
if (out_p && black_windows)
{
- for (screen = 0; screen < nscreens; screen++)
+ for (screen = 0; screen < nwindows; screen++)
{
if (clear_windows)
XClearWindow (dpy, black_windows[screen]);
static int
xf86_gamma_fade (Display *dpy,
- Window *black_windows, int seconds, int ticks,
+ Window *black_windows, int nwindows,
+ int seconds, int ticks,
Bool out_p, Bool clear_windows)
{
int steps = seconds * ticks;
way down to 0, then take the windows off the screen.
*/
if (!out_p)
- for (screen = 0; screen < nscreens; screen++)
- {
+ {
+ for (screen = 0; screen < nscreens; screen++)
xf86_whack_gamma(dpy, screen, &info[screen], 0.0);
+ for (screen = 0; screen < nwindows; screen++)
if (black_windows && black_windows[screen])
{
XUnmapWindow (dpy, black_windows[screen]);
XClearWindow (dpy, black_windows[screen]);
XSync(dpy, False);
}
- }
-
+ }
/* Iterate by steps of the animation... */
for (i = (out_p ? steps : 0);
if (out_p && black_windows)
{
- for (screen = 0; screen < nscreens; screen++)
+ for (screen = 0; screen < nwindows; screen++)
{
if (clear_windows)
XClearWindow (dpy, black_windows[screen]);