diff options
author | Sam Lantinga <slouken@libsdl.org> | 2018-02-16 10:23:10 -0800 |
---|---|---|
committer | Sam Lantinga <slouken@libsdl.org> | 2018-02-16 10:23:10 -0800 |
commit | adfd9737330f22966d37bcc931aca43123b82d7b (patch) | |
tree | e166152101096648c996d316fc50ffacacce7b5a | |
parent | 15e411aedf932f489c67c8f231d8a01911148a00 (diff) |
Fixed bug 4085 - X11: Allow configuring _NET_WM_BYPASS_COMPOSITOR through SDL hints
Callum McGing
This patch allows the user to disable the behaviour that blocks the compositor through a new hint: SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR. This allows tools or other windowed applications to behave properly under KWin.
-rw-r--r-- | include/SDL_hints.h | 12 | ||||
-rw-r--r-- | src/video/x11/SDL_x11window.c | 11 |
2 files changed, 18 insertions, 5 deletions
diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 08a00c96b8..e657768b98 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -212,6 +212,18 @@ extern "C" { #define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING" /** + * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used. + * + * This variable can be set to the following values: + * "0" - Disable _NET_WM_BYPASS_COMPOSITOR + * "1" - Enable _NET_WM_BYPASS_COMPOSITOR + * + * By default SDL will use _NET_WM_BYPASS_COMPOSITOR + * + */ +#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR" + +/** * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden * * This variable can be set to the following values: diff --git a/src/video/x11/SDL_x11window.c b/src/video/x11/SDL_x11window.c index 2060391522..be03aa6de0 100644 --- a/src/video/x11/SDL_x11window.c +++ b/src/video/x11/SDL_x11window.c @@ -579,11 +579,12 @@ X11_CreateWindow(_THIS, SDL_Window * window) wintype = X11_XInternAtom(display, wintype_name, False); X11_XChangeProperty(display, w, _NET_WM_WINDOW_TYPE, XA_ATOM, 32, PropModeReplace, (unsigned char *)&wintype, 1); - - _NET_WM_BYPASS_COMPOSITOR = X11_XInternAtom(display, "_NET_WM_BYPASS_COMPOSITOR", False); - X11_XChangeProperty(display, w, _NET_WM_BYPASS_COMPOSITOR, XA_CARDINAL, 32, - PropModeReplace, - (unsigned char *)&compositor, 1); + if (SDL_GetHintBoolean(SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR, SDL_TRUE)) { + _NET_WM_BYPASS_COMPOSITOR = X11_XInternAtom(display, "_NET_WM_BYPASS_COMPOSITOR", False); + X11_XChangeProperty(display, w, _NET_WM_BYPASS_COMPOSITOR, XA_CARDINAL, 32, + PropModeReplace, + (unsigned char *)&compositor, 1); + } { Atom protocols[3]; |