mirror of
https://github.com/labwc/labwc.git
synced 2025-11-01 22:58:47 -04:00
xwayland: guard against mapping view without surface
...which may occur if a user minimizes an xwayland view (typically a child view such as a dialog) at the same time as the client sends a request-unmap, which xwayland clients sometimes do without actually requesting destroy and just leave them dangling.
This commit is contained in:
parent
1212f34825
commit
dfc0dfba6d
1 changed files with 11 additions and 2 deletions
|
|
@ -410,14 +410,23 @@ top_left_edge_boundary_check(struct view *view)
|
|||
static void
|
||||
xwayland_view_map(struct view *view)
|
||||
{
|
||||
struct wlr_xwayland_surface *xwayland_surface = xwayland_surface_from_view(view);
|
||||
if (view->mapped) {
|
||||
return;
|
||||
}
|
||||
if (!xwayland_surface->surface) {
|
||||
/*
|
||||
* We may get here if a user minimizes an xwayland dialog at the
|
||||
* same time as the client requests unmap, which xwayland
|
||||
* clients sometimes do without actually requesting destroy
|
||||
* even if they don't intend to use that view/surface anymore
|
||||
*/
|
||||
wlr_log(WLR_DEBUG, "Cannot map view without wlr_surface");
|
||||
return;
|
||||
}
|
||||
view->mapped = true;
|
||||
ensure_initial_geometry_and_output(view);
|
||||
wlr_scene_node_set_enabled(&view->scene_tree->node, true);
|
||||
struct wlr_xwayland_surface *xwayland_surface =
|
||||
xwayland_surface_from_view(view);
|
||||
if (!view->fullscreen && xwayland_surface->fullscreen) {
|
||||
view_set_fullscreen(view, true);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue