From 25a62a3775932188d7f59077c70b59478cdae184 Mon Sep 17 00:00:00 2001 From: Kirill Primak Date: Tue, 6 Jun 2023 13:01:47 +0300 Subject: [PATCH] subcompositor: simplify subsurface_consider_map(), call on add Fixes: 49e9be62ae92382eddca600082785489c82ea487 --- types/wlr_subcompositor.c | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/types/wlr_subcompositor.c b/types/wlr_subcompositor.c index cb8a8d55..b16fc17f 100644 --- a/types/wlr_subcompositor.c +++ b/types/wlr_subcompositor.c @@ -183,33 +183,9 @@ static const struct wl_subsurface_interface subsurface_implementation = { const struct wlr_surface_role subsurface_role; -/** - * Checks if this subsurface needs to be marked as mapped. The subsurface - * is considered mapped if both: - * - The subsurface has a buffer - * - Its parent is mapped - */ void subsurface_consider_map(struct wlr_subsurface *subsurface) { - if (subsurface->surface->mapped || !wlr_surface_has_buffer(subsurface->surface)) { - return; - } - - if (!subsurface->parent->mapped) { - return; - } - - // Now we can map the subsurface - wlr_surface_map(subsurface->surface); - - // Try mapping all children too - struct wlr_subsurface *child; - wl_list_for_each(child, &subsurface->surface->current.subsurfaces_below, - current.link) { - subsurface_consider_map(child); - } - wl_list_for_each(child, &subsurface->surface->current.subsurfaces_above, - current.link) { - subsurface_consider_map(child); + if (subsurface->parent->mapped && wlr_surface_has_buffer(subsurface->surface)) { + wlr_surface_map(subsurface->surface); } } @@ -312,6 +288,7 @@ void subsurface_handle_parent_commit(struct wlr_subsurface *subsurface) { subsurface->added = true; wl_signal_emit_mutable(&subsurface->parent->events.new_subsurface, subsurface); + subsurface_consider_map(subsurface); } }