I changed my resolution in gnome-display-properties to 800x600, loged out and in again. Now gnome-session set my resolution to 800x600. Then i changed back to the default size (1024x768), and when the screensaver turned on it was only covering the top-left 800x600.
alex: How did the resolution get changed? Via the RandR extension?
Yes.
What does XF86VidModeGetViewPort return (see #81593)?
It returns "0,0", and the viewport is correctly placed at 0,0. This is pretty easy to reproduce: killall xscreensaver xrandr -s 800x600 xscreensaver& xrandr -s 1024x768 <wait for screensaver to start, or preview it in the xscreensaver-demo app> Notice that the screensaver is only 800x600. Restarting xscreensave fixes the problem. I think xscreensaver needs to listen to XRandR events so it can know when the screen changes size.
*** Bug 100619 has been marked as a duplicate of this bug. ***
*** Bug 109277 has been marked as a duplicate of this bug. ***
jwz's changelog page has this for the latest version of xscreensaver: * Added support for the RANDR (Resize and Rotate) extension to detect when the size of the desktop has been changed while xscreensaver is already running. I'll roll out new rawhide rpms soon.
This should be fixed in rawhide now.