mirror of
https://github.com/labwc/labwc.git
synced 2025-11-03 09:01:51 -05: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
|
static void
|
||||||
xwayland_view_map(struct view *view)
|
xwayland_view_map(struct view *view)
|
||||||
{
|
{
|
||||||
|
struct wlr_xwayland_surface *xwayland_surface = xwayland_surface_from_view(view);
|
||||||
if (view->mapped) {
|
if (view->mapped) {
|
||||||
return;
|
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;
|
view->mapped = true;
|
||||||
ensure_initial_geometry_and_output(view);
|
ensure_initial_geometry_and_output(view);
|
||||||
wlr_scene_node_set_enabled(&view->scene_tree->node, true);
|
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) {
|
if (!view->fullscreen && xwayland_surface->fullscreen) {
|
||||||
view_set_fullscreen(view, true);
|
view_set_fullscreen(view, true);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue