Fixed bug 1058 - SDL: erroneously uses xrandr-style mode switching
Jan Engelhardt 2010-09-23 17:02:37 PDT
Problem:
SDL-1.2.14.
When SDL switches to fullscreen 640x480 - for example, because the game is
configured to run in such resolution - or back, it changes the desktop size too
by means of xrandr or something along the lines of that.
Actual results:
Windows on my desktop are reordered, which is usually a result of the WM being
forced to do so because the desktop size (virtualsize) changed.
Resolution switching also takes significantly longer than it did before — this
is another sign that it switches desktop size (too), not just resolution.
First the screen goes black-with-backlight and after roughly 500ms, the TFT
screen finally gets the new 640x480 mode signal (I use VGA), which is evidenced
by the backlight going briefly off.
Expected results:
Previous behavior. In other worsd, leave desktop size as-is (and subsequently
keep my windows where they are) and _only_ change the resolution. The old
switching style is also way faster in that there is no black-with-backlight
delay.
Additional information:
Overriding the system SDL 1.2.14 libraries and using LD_LIBRARY_PATH to point
to SDL-1.2.13 libraries brings back the desired behavior.
hg bisecting...
The first bad revision is:
changeset: 4313:8ec3036098df
branch: SDL-1.2
user: Sam Lantinga <slouken@libsdl.org>
date: Sat Oct 10 10:14:01 2009 +0000
summary: Adapted from Debian patch: 320_activate_xrandr_on_default.diff
I am aware of the existence of the SDL_VIDEO_X11_XRANDR environment variable,
but that only looks like a temporary workaround to me.
--- a/src/video/x11/SDL_x11modes.c Fri Dec 30 14:14:45 2011 -0500
+++ b/src/video/x11/SDL_x11modes.c Fri Dec 30 14:37:50 2011 -0500
@@ -421,16 +421,11 @@
return 0;
}
- /* This used to default off, due to KDE window maximize problems */
- /* Reactivated since I haven't encountered such problems with KDE, but if
- one does encounter such problems he/she can just set
- SDL_VIDEO_X11_XRANDR to 0
- Closes Debian bug: #450689
- */
-/* if ( !env ) {
+ /* This defaults off now, due to KDE window maximize problems */
+ if ( !env ) {
return 0;
}
-*/
+
if ( !SDL_X11_HAVE_XRANDR ) {
return 0;
}