Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
I'm becoming more and more convinced that the application should neve…
Browse files Browse the repository at this point in the history
…r use XRandR, and it's the window manager's responsibility to track and manage display modes for fullscreen windows.

Because it's so broken, I'm going to disable XRandR by default.  You can still enable it via environment variable or application hint (SDL_HINT_VIDEO_X11_XRANDR)
  • Loading branch information
slouken committed Oct 4, 2012
1 parent 55da022 commit 5456506
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 2 deletions.
2 changes: 1 addition & 1 deletion include/SDL_hints.h
Expand Up @@ -148,7 +148,7 @@ extern "C" {
* "0" - Disable XRandR
* "1" - Enable XRandR
*
* By default SDL will use XRandR if it is available.
* By default SDL will not use XRandR because of window manager issues.
*/
#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR"

Expand Down
21 changes: 20 additions & 1 deletion src/video/x11/SDL_x11modes.c
Expand Up @@ -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)
Expand Down Expand Up @@ -190,12 +200,21 @@ CheckXRandR(Display * display, int *major, int *minor)

/* 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
Expand Down

0 comments on commit 5456506

Please sign in to comment.