Adding support for _NET_WM_BYPASS_COMPOSITOR

Gnome’s Mutter, KDE’s KWin now support _NET_WM_BYPASS_COMPOSITOR hint [1].
It allows applications to tell the WM that they are
"graphics-demanding" and want to be displayed as fast as possible.

Here is the patch for SDL 2 that sets this hint for fullscreen windows.
I’m using this patch for month, tried different games from Steam and
HIB, and everything seems to be fine.

[1] http://standards.freedesktop.org/wm-spec/wm-spec-latest.html#idp6357888

diff -r 728e5f22a82f -r 9de0f8f2c193 src/video/x11/SDL_x11window.c
— a/src/video/x11/SDL_x11window.c Thu Jun 13 22:30:02 2013 -0700
+++ b/src/video/x11/SDL_x11window.c Sun Jul 28 22:29:42 2013 +0700
@@ -1028,6 +1028,13 @@
}
}

  • {
  •    Atom _NET_WM_BYPASS_COMPOSITOR = XInternAtom(display,
    

“_NET_WM_BYPASS_COMPOSITOR”, False);

  •    unsigned long value = fullscreen ? 1 : 0;
    
  •    XChangeProperty(display, data->xwindow, _NET_WM_BYPASS_COMPOSITOR,
    
  •                    XA_CARDINAL, 32, PropModeReplace, (unsigned
    

char*)&value, 1);

  • }+
    XFlush(display);
    }

Thanks, this is actually in the latest SDL release candidate. :)On Sun, Jul 28, 2013 at 8:41 AM, Alexander Mezin <mezin.alexander at gmail.com>wrote:

Gnome’s Mutter, KDE’s KWin now support _NET_WM_BYPASS_COMPOSITOR hint [1].
It allows applications to tell the WM that they are
"graphics-demanding" and want to be displayed as fast as possible.

Here is the patch for SDL 2 that sets this hint for fullscreen windows.
I’m using this patch for month, tried different games from Steam and
HIB, and everything seems to be fine.

[1]
http://standards.freedesktop.org/wm-spec/wm-spec-latest.html#idp6357888

diff -r 728e5f22a82f -r 9de0f8f2c193 src/video/x11/SDL_x11window.c
— a/src/video/x11/SDL_x11window.c Thu Jun 13 22:30:02 2013 -0700
+++ b/src/video/x11/SDL_x11window.c Sun Jul 28 22:29:42 2013 +0700
@@ -1028,6 +1028,13 @@
}
}

  • {
  •    Atom _NET_WM_BYPASS_COMPOSITOR = XInternAtom(display,
    

“_NET_WM_BYPASS_COMPOSITOR”, False);

  •    unsigned long value = fullscreen ? 1 : 0;
    
  •    XChangeProperty(display, data->xwindow, _NET_WM_BYPASS_COMPOSITOR,
    
  •                    XA_CARDINAL, 32, PropModeReplace, (unsigned
    

char*)&value, 1);

  • }
  • XFlush(display);
    }

SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org