From fbece01284bc8b4e77690f8be7c5e81309e398e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Tue, 24 Dec 2024 15:02:00 +0100 Subject: [PATCH] xwayland: Update surface window from xwl_unrealize_window MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michel Dänzer Part-of: (cherry picked from commit ceb313f277e867ab4ebde5220e7bc2d4ea2db97e) --- hw/xwayland/xwayland-window.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c index ca9eaaaf4..38d7dc0c7 100644 --- a/hw/xwayland/xwayland-window.c +++ b/hw/xwayland/xwayland-window.c @@ -1722,19 +1722,23 @@ xwl_unrealize_window(WindowPtr window) { ScreenPtr screen = window->drawable.pScreen; struct xwl_screen *xwl_screen = xwl_screen_get(screen); - struct xwl_window *xwl_window = xwl_window_get(window); + struct xwl_window *xwl_window = xwl_window_from_window(window); Bool ret; - if (xwl_window) { - unregister_damage(xwl_window); - xwl_window_dispose(xwl_window); - } - screen->UnrealizeWindow = xwl_screen->UnrealizeWindow; ret = (*screen->UnrealizeWindow) (window); xwl_screen->UnrealizeWindow = screen->UnrealizeWindow; screen->UnrealizeWindow = xwl_unrealize_window; + if (xwl_window) { + if (window == xwl_window->toplevel) { + unregister_damage(xwl_window); + xwl_window_dispose(xwl_window); + } else if (window == xwl_window->surface_window) { + xwl_window_update_surface_window(xwl_window); + } + } + return ret; }