[PATCH xserver] xwayland: place a manual redirect on windows

Olivier Fourdan ofourdan at redhat.com
Thu Jan 25 12:43:09 UTC 2018


Place a manual redirect on windows on xwl_realize_window() and remove
it on xwl_unrealize_window() to avoid the X11 window manager removing
its redirect before Xwayland has unrealized the window (e.g. if the X11
window manager has terminated unexpectedly)

Suggested by Daniel Stone <daniel at fooishbar.org>

Signed-off-by: Olivier Fourdan <ofourdan at redhat.com>
Reviewed-by: Daniel Stone <daniel at fooishbar.org>
---
 R-b was given by Daniel on irc on #wayland.

 This goes along with the other patch:
 https://patchwork.freedesktop.org/patch/200439/

 hw/xwayland/xwayland.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c
index 88d31f80b..19aa14a47 100644
--- a/hw/xwayland/xwayland.c
+++ b/hw/xwayland/xwayland.c
@@ -32,6 +32,7 @@
 #include <micmap.h>
 #include <misyncshm.h>
 #include <compositeext.h>
+#include <compint.h>
 #include <glx_extinit.h>
 #include <os.h>
 #include <xserver_poll.h>
@@ -528,6 +529,8 @@ xwl_realize_window(WindowPtr window)
         goto err_surf;
     }
 
+    compRedirectWindow(serverClient, window, CompositeRedirectManual);
+
     DamageRegister(&window->drawable, xwl_window->damage);
     DamageSetReportAfterOp(xwl_window->damage, TRUE);
 
@@ -575,6 +578,8 @@ xwl_unrealize_window(WindowPtr window)
         xwl_seat_clear_touch(xwl_seat, window);
     }
 
+    compUnredirectWindow(serverClient, window, CompositeRedirectManual);
+
     screen->UnrealizeWindow = xwl_screen->UnrealizeWindow;
     ret = (*screen->UnrealizeWindow) (window);
     xwl_screen->UnrealizeWindow = screen->UnrealizeWindow;
-- 
2.14.3



More information about the wayland-devel mailing list