How can I make the XAnalogTV xscreensaver fill my screen?

1

I recently installed xscreensaver, as well as the additional/extra screensavers. Many of the OpenGL ones function correctly, going fullscreen as expected. However, for some reason, the XAnalogTV screensaver leaves two "blank" spots on the edges of my screen.

If I manually launch XAnalogTV, it displays a window, which it fills correctly. When I maximize the window, the same effect occurs: the window maximizes, but the two edges of the screen are literally "transparent". This effect also occurs when the screensaver is set to fullscreen.

For these reasons, I believe the problem may be related to the aspect ratio of the screen. The edges of the screen are literally "ignored", with nothing being drawn there. Specifically, note the transition between the maximized and full-screen screenshots (with the un-drawn whitespace shrinking as the vertical height has been increased).

For reference, I am running Xubuntu 12.04 on a Dell Vostro 1520 (Intel P8600, Nvidia 9300M) with a 1440 x 900 display (16:10). I have also set the GetViewPortIsFullOfLies preference to true.

Is there any way to force XAnalogTV to fill my entire screen? Alternatively, as I believe the problem is aspect-ratio related, is there any way I can get the screensaver to render larger than my display, and simply discard the extra pixels?


Relevant screenshots (windowed, maximized, and full-screen, respectively):

XAnalogTV Working Correctly (Windowed)

XAnalogTV Edges Cut-Off (Maximized)

XAnalogTV Edges Cut-Off (Full-Screen)

You can see in the last two that the scrollbar from Firefox is clearly visible, even though this is a full-screen screensaver.

Breakthrough

Posted 2012-09-07T14:28:49.407

Reputation: 32 927

Answers

4

After some deliberation, I decided to solve the issue myself. I wrote a post on my blog here, which details the steps I took to fix the issue. The basic process to follow is:

  1. Download the XScreenSaver source code.
  2. Get all build dependencies, and run ./configure on your system.
  3. In the source distribution, find the file analogtv.c file in the hacks directory. In that file, comment out (or delete) lines 328 and 338. These lines include the code wlim = hlim * max_ratio and hlim = wlim / min_ratio, respectively, which are responsible for preventing the screensaver from stretching too far from a typical 4:3 analog display.
  4. Run make to build XScreenSaver and XAnalogTV.
  5. Replace the XAnalogTV binary (found in the directory /usr/lib/xscreensaver/ on my system) with the one that was just built. Make a backup of the older file first.

You should now have a working XAnalogTV screensaver after restarting the XScreenSaver daemon:

enter image description here

For further details including specific commands, see my blog post here.

Breakthrough

Posted 2012-09-07T14:28:49.407

Reputation: 32 927

Somebody commit this upstream!!!!! – Lodewijk – 2014-11-27T21:04:06.450

The lines have moved by the way. Might be easier to just set max_ratio to 10000. – Lodewijk – 2014-11-27T21:18:48.947