--- 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