X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=driver%2Fwindows.c;h=23ba01ff3fa75f9ac15e1c6272016c723731bd01;hp=e6ca0bf53cae9ae0c6668c596e288e97107834dd;hb=c494fd2e6b3b25582375d62e40f4f5cc984ca424;hpb=0d6b320def9180cf907ceaed56b23a972a11b757 diff --git a/driver/windows.c b/driver/windows.c index e6ca0bf5..23ba01ff 100644 --- a/driver/windows.c +++ b/driver/windows.c @@ -1,5 +1,5 @@ /* windows.c --- turning the screen black; dealing with visuals, virtual roots. - * xscreensaver, Copyright (c) 1991-2004 Jamie Zawinski + * xscreensaver, Copyright (c) 1991-2007 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 @@ -1419,7 +1419,12 @@ initialize_screensaver_window_1 (saver_screen_info *ssi) attrs.backing_pixel = ssi->black_pixel; attrs.border_pixel = ssi->black_pixel; - if (p->debug_p && !p->quad_p) width = width / 2; + if (p->debug_p +# ifdef QUAD_MODE + && !p->quad_p +# endif + ) + width = width / 2; if (!p->verbose_p || printed_visual_info) ; @@ -1597,9 +1602,21 @@ resize_screensaver_window (saver_info *si) */ int nscreens; XineramaScreenInfo *xsi = XineramaQueryScreens (si->dpy, &nscreens); - if (nscreens != si->nscreens) abort(); + + if (nscreens != si->nscreens) { + /* Apparently some Xinerama implementations let you use a hot-key + to change the number of screens in use! This is, of course, + documented nowhere. Let's try to do something marginally less + bad than crashing. + */ + fprintf (stderr, "%s: bad craziness: xinerama screen count changed " + "from %d to %d!\n", blurb(), si->nscreens, nscreens); + if (nscreens > si->nscreens) + nscreens = si->nscreens; + } + if (!xsi) abort(); - for (i = 0; i < si->nscreens; i++) + for (i = 0; i < nscreens; i++) { saver_screen_info *ssi = &si->screens[i]; if (p->verbose_p && @@ -1677,7 +1694,12 @@ resize_screensaver_window (saver_info *si) changes.height = height; changes.border_width = 0; - if (p->debug_p && !p->quad_p) changes.width = changes.width / 2; + if (p->debug_p +# ifdef QUAD_MODE + && !p->quad_p +# endif + ) + changes.width = changes.width / 2; if (p->verbose_p) fprintf (stderr,