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);