src/video/x11/SDL_x11modes.c
changeset 6558 90f231aa77b9
parent 6553 2f03111a2105
child 6559 1fc5f5116bd0
--- a/src/video/x11/SDL_x11modes.c	Thu Oct 04 02:56:25 2012 -0700
+++ b/src/video/x11/SDL_x11modes.c	Thu Oct 04 13:50:41 2012 -0700
@@ -25,7 +25,17 @@
 #include "SDL_hints.h"
 #include "SDL_x11video.h"
 
-/*#define X11MODES_DEBUG*/
+#define X11MODES_DEBUG
+
+/* I'm becoming more and more convinced that the application should never use XRandR,
+ * and it's the window manager's responsibility to track and manage display modes for
+ * fullscreen windows.  Right now XRandR is completely broken with respect to window
+ * manager behavior on every window manager that I can find.  For example, on Unity 3D
+ * if you show a fullscreen window while the resolution is changing (within ~250 ms)
+ * your window will retain the fullscreen state hint but be decorated and windowed.
+*/
+#define XRANDR_DISABLED_BY_DEFAULT
+
 
 static int
 get_visualinfo(Display * display, int screen, XVisualInfo * vinfo)
@@ -190,12 +200,21 @@
 
     /* Allow environment override */
     env = SDL_GetHint(SDL_HINT_VIDEO_X11_XRANDR);
+#ifdef XRANDR_DISABLED_BY_DEFAULT
+    if (!env || !SDL_atoi(env)) {
+#ifdef X11MODES_DEBUG
+        printf("XRandR disabled by default due to window manager issues\n");
+#endif
+        return SDL_FALSE;
+    }
+#else
     if (env && !SDL_atoi(env)) {
 #ifdef X11MODES_DEBUG
         printf("XRandR disabled due to hint\n");
 #endif
         return SDL_FALSE;
     }
+#endif /* XRANDR_ENABLED_BY_DEFAULT */
 
     if (!SDL_X11_HAVE_XRANDR) {
 #ifdef X11MODES_DEBUG