The xwayland window type XWAYLAND is not handled by the shell at all, instead libweston-desktop maps such surfaces itself. However, it forgot to set weston_surface::is_mapped and weston_view::is_mapped.
weston_surface::is_mapped affects the behaviour of weston_view_unmap() and weston_surface_attach().
weston_view::is_mapped affects the behaviour of weston_view_unmap() and weston_view_destroy().
When manually mapping a window of type XWAYLAND, mark both the view and surface as mapped. This follows the expections in libweston, even though the meaning of is_mapped is not clearly defined for either surface or
view.
Also, when the XWAYLAND window is manually unmapped, unmap the weston_surface. This updates weston_surface::is_mapped to reflect the state. However, as a side-effect it will also unmap all sibling views, should any exist.
v2: rename surface_base to wsurface
e3a582f libweston-desktop/xwayland: add is_mapped handling for XWAYLAND
libweston-desktop/xwayland.c | 6 ++++++
1 file changed, 6 insertions(+)
Upstream: cgit.freedesktop.org