From 23ea8655085272df86418b580e63f648599dd7cb Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Tue, 27 Jun 2023 08:08:50 +0100 Subject: [PATCH] surface: Remove weston_subsurface.unused_views Now that we deterministically create views for subsurfaces, we don't need to stash them away into unused_views to dynamically create and free them at repaint time. Signed-off-by: Daniel Stone --- libweston/compositor.c | 51 +----------------------------------------- 1 file changed, 1 insertion(+), 50 deletions(-) diff --git a/libweston/compositor.c b/libweston/compositor.c index a37e6772f..1e9603eeb 100644 --- a/libweston/compositor.c +++ b/libweston/compositor.c @@ -2995,42 +2995,6 @@ output_accumulate_damage(struct weston_output *output) } } -static void -surface_stash_subsurface_views(struct weston_surface *surface) -{ - struct weston_subsurface *sub; - - wl_list_for_each(sub, &surface->subsurface_list, parent_link) { - if (sub->surface == surface) - continue; - - wl_list_insert_list(&sub->unused_views, &sub->surface->views); - wl_list_init(&sub->surface->views); - - surface_stash_subsurface_views(sub->surface); - } -} - -static void -surface_free_unused_subsurface_views(struct weston_surface *surface) -{ - struct weston_subsurface *sub; - struct weston_view *view, *nv; - - wl_list_for_each(sub, &surface->subsurface_list, parent_link) { - if (sub->surface == surface) - continue; - - wl_list_for_each_safe(view, nv, &sub->unused_views, surface_link) - assert(!weston_view_is_mapped(view)); - - wl_list_insert_list(&sub->surface->views, &sub->unused_views); - wl_list_init(&sub->unused_views); - - surface_free_unused_subsurface_views(sub->surface); - } -} - static struct weston_paint_node * view_ensure_paint_node(struct weston_view *view, struct weston_output *output) { @@ -3077,7 +3041,7 @@ view_list_add_subsurface_view(struct weston_compositor *compositor, if (!weston_surface_is_mapped(sub->surface)) return; - wl_list_for_each(iv, &sub->unused_views, surface_link) { + wl_list_for_each(iv, &sub->surface->views, surface_link) { if (iv->parent_view == parent) { view = iv; break; @@ -3085,9 +3049,6 @@ view_list_add_subsurface_view(struct weston_compositor *compositor, } assert(view); - /* Put it back in the surface's list of views */ - wl_list_remove(&view->surface_link); - wl_list_insert(&sub->surface->views, &view->surface_link); weston_view_update_transform(view); view->is_mapped = true; @@ -3175,10 +3136,6 @@ weston_compositor_build_view_list(struct weston_compositor *compositor) struct weston_view *view, *tmp; struct weston_layer *layer; - wl_list_for_each(layer, &compositor->layer_list, link) - wl_list_for_each(view, &layer->view_list.link, layer_link.link) - surface_stash_subsurface_views(view->surface); - wl_list_for_each_safe(view, tmp, &compositor->view_list, link) wl_list_init(&view->link); wl_list_init(&compositor->view_list); @@ -3189,10 +3146,6 @@ weston_compositor_build_view_list(struct weston_compositor *compositor) } } - wl_list_for_each(layer, &compositor->layer_list, link) - wl_list_for_each(view, &layer->view_list.link, layer_link.link) - surface_free_unused_subsurface_views(view->surface); - wl_list_for_each(output, &compositor->output_list, link) weston_output_build_z_order_list(compositor, output); @@ -5343,8 +5296,6 @@ weston_subsurface_create(uint32_t id, struct weston_surface *surface, if (sub == NULL) return NULL; - wl_list_init(&sub->unused_views); - sub->resource = wl_resource_create(client, &wl_subsurface_interface, 1, id); if (!sub->resource) {