From f41696b0fc96227ab82c2f417198353fe11922e6 Mon Sep 17 00:00:00 2001 From: Robert Mader Date: Fri, 6 Aug 2021 13:10:52 +0200 Subject: [PATCH] wayland/subsurface: Handle node unlinking on parent destroyed It concerns subsurface state and the subsurface already listenes for the parent to get destroyed. Part-of: --- src/wayland/meta-wayland-subsurface.c | 1 + src/wayland/meta-wayland-surface.c | 16 +--------------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/src/wayland/meta-wayland-subsurface.c b/src/wayland/meta-wayland-subsurface.c index 9f3209476..7e996f4d3 100644 --- a/src/wayland/meta-wayland-subsurface.c +++ b/src/wayland/meta-wayland-subsurface.c @@ -502,6 +502,7 @@ surface_handle_parent_surface_destroyed (struct wl_listener *listener, surface, sub.parent_destroy_listener); + g_node_unlink (surface->subsurface_branch_node); surface->sub.parent = NULL; } diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c index 872ee6c49..630c76c8a 100644 --- a/src/wayland/meta-wayland-surface.c +++ b/src/wayland/meta-wayland-surface.c @@ -1415,13 +1415,6 @@ meta_wayland_surface_notify_unmapped (MetaWaylandSurface *surface) g_signal_emit (surface, surface_signals[SURFACE_UNMAPPED], 0); } -static void -unlink_note (GNode *node, - gpointer data) -{ - g_node_unlink (node); -} - static void wl_surface_destructor (struct wl_resource *resource) { @@ -1474,14 +1467,7 @@ wl_surface_destructor (struct wl_resource *resource) if (surface->wl_subsurface) wl_resource_destroy (surface->wl_subsurface); - if (surface->subsurface_branch_node) - { - g_node_children_foreach (surface->subsurface_branch_node, - G_TRAVERSE_NON_LEAVES, - unlink_note, - NULL); - g_clear_pointer (&surface->subsurface_branch_node, g_node_destroy); - } + g_clear_pointer (&surface->subsurface_branch_node, g_node_destroy); g_hash_table_destroy (surface->shortcut_inhibited_seats);