From 7e1d446279fb35138eaa390d7bd275b47d3629ba Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Mon, 19 Jun 2023 23:25:53 +0100 Subject: [PATCH] libweston: Add weston_view::map_signal It fires when a view is mapped. Signed-off-by: Daniel Stone --- include/libweston/libweston.h | 1 + libweston/compositor.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/include/libweston/libweston.h b/include/libweston/libweston.h index 31aad93a0..6d027a715 100644 --- a/include/libweston/libweston.h +++ b/include/libweston/libweston.h @@ -1638,6 +1638,7 @@ struct weston_view { struct weston_surface *surface; struct wl_list surface_link; struct wl_signal destroy_signal; + struct wl_signal map_signal; struct wl_signal unmap_signal; /* struct weston_paint_node::view_link */ diff --git a/libweston/compositor.c b/libweston/compositor.c index 990068596..12affe017 100644 --- a/libweston/compositor.c +++ b/libweston/compositor.c @@ -476,6 +476,7 @@ weston_view_create(struct weston_surface *surface) wl_list_insert(&surface->views, &view->surface_link); wl_signal_init(&view->destroy_signal); + wl_signal_init(&view->map_signal); wl_signal_init(&view->unmap_signal); wl_list_init(&view->link); wl_list_init(&view->layer_link.link); @@ -3528,6 +3529,8 @@ WL_EXPORT void weston_view_move_to_layer(struct weston_view *view, struct weston_layer_entry *layer) { + bool was_mapped = view->is_mapped; + if (layer == &view->layer_link) return; @@ -3550,6 +3553,9 @@ weston_view_move_to_layer(struct weston_view *view, weston_view_geometry_dirty(view); weston_view_update_transform(view); weston_surface_damage(view->surface); + + if (!was_mapped) + weston_signal_emit_mutable(&view->map_signal, view); } WL_EXPORT void