xwayland: Stop on first unmapped child
If a child window of the same size is unmapped, we should stop walking
the tree looking for the surface window to use.
Whatever lies beneath is not visible anyway.
This also fixes an issue with the Damage list becoming corrupted when
destroying a window, because the first thing that DeleteWindow() does
is to unmap the window and crush the window tree underneath it.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Fixes: 3a0fc268
- xwayland: Add xwl_window::surface_window
Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1680
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1564>
This commit is contained in:
parent
0509b13fa2
commit
32e16082c5
|
@ -1351,6 +1351,9 @@ xwl_window_update_surface_window(struct xwl_window *xwl_window)
|
|||
if (!RegionEqual(&window->winSize, &surface_window->winSize))
|
||||
break;
|
||||
|
||||
if (!window->mapped)
|
||||
break;
|
||||
|
||||
/* The surface window must be top-level for its window pixmap */
|
||||
window_pixmap = screen->GetWindowPixmap(window);
|
||||
if (window_pixmap == surface_pixmap)
|
||||
|
|
Loading…
Reference in New Issue