diff options
author | Felix M. Cobos <felix.cobos@gmail.com> | 2017-09-09 23:24:19 +0200 |
---|---|---|
committer | Felix M. Cobos <felix.cobos@gmail.com> | 2017-09-09 23:24:19 +0200 |
commit | 3b5ee014bd2ab30d96211866efdb85ce54fa4473 (patch) | |
tree | f33699e47d9b5b6eade0d2f060692a30341858a8 | |
parent | d1cb73b47a17de830d9474026ffa7b3587cfbc68 (diff) |
Hint the window manager to disable desktop compositing in fullscreen mode.
-rw-r--r-- | platform/x11/os_x11.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp index f96343c92c..4dd85a558f 100644 --- a/platform/x11/os_x11.cpp +++ b/platform/x11/os_x11.cpp @@ -246,6 +246,11 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au // borderless fullscreen window mode if (current_videomode.fullscreen) { + // set bypass compositor hint + Atom bypass_compositor = XInternAtom(x11_display, "_NET_WM_BYPASS_COMPOSITOR", False); + unsigned long compositing_disable_on = 1; + XChangeProperty(x11_display, x11_window, bypass_compositor, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&compositing_disable_on, 1); + // needed for lxde/openbox, possibly others Hints hints; Atom property; @@ -695,6 +700,12 @@ void OS_X11::set_wm_fullscreen(bool p_enabled) { xev.xclient.data.l[2] = 0; XSendEvent(x11_display, DefaultRootWindow(x11_display), False, SubstructureRedirectMask | SubstructureNotifyMask, &xev); + + // set bypass compositor hint + Atom bypass_compositor = XInternAtom(x11_display, "_NET_WM_BYPASS_COMPOSITOR", False); + unsigned long compositing_disable_on = p_enabled ? 1 : 0; + XChangeProperty(x11_display, x11_window, bypass_compositor, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&compositing_disable_on, 1); + XFlush(x11_display); if (!p_enabled && !is_window_resizable()) { |