From ad2c014ef37e7fc918d584d2ac3ef747ccaa2ce8 Mon Sep 17 00:00:00 2001 From: Michael Olbrich Date: Tue, 7 Feb 2023 14:35:30 +0100 Subject: [PATCH] ivi-layout: add surface type to the surface properties This makes it possible for the controller to distinguish different surface types. For IVI and desktop surfaces, this is not all that useful, but it will be needed for a new surface type: input panels. Signed-off-by: Michael Olbrich --- ivi-shell/ivi-layout-export.h | 6 ++++++ ivi-shell/ivi-layout.c | 10 +++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ivi-shell/ivi-layout-export.h b/ivi-shell/ivi-layout-export.h index 154cf8fa..1e72241b 100644 --- a/ivi-shell/ivi-layout-export.h +++ b/ivi-shell/ivi-layout-export.h @@ -66,6 +66,11 @@ extern "C" { struct ivi_layout_layer; struct ivi_layout_surface; +enum ivi_layout_surface_type { + IVI_LAYOUT_SURFACE_TYPE_IVI, + IVI_LAYOUT_SURFACE_TYPE_DESKTOP, +}; + struct ivi_layout_surface_properties { wl_fixed_t opacity; @@ -86,6 +91,7 @@ struct ivi_layout_surface_properties int32_t transition_type; uint32_t transition_duration; uint32_t event_mask; + enum ivi_layout_surface_type surface_type; }; struct ivi_layout_layer_properties diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c index 8d81e23d..7e6cb7ad 100644 --- a/ivi-shell/ivi-layout.c +++ b/ivi-shell/ivi-layout.c @@ -1961,7 +1961,8 @@ ivi_layout_surface_dump(struct weston_surface *surface, */ static struct ivi_layout_surface* -surface_create(struct weston_surface *wl_surface, uint32_t id_surface) +surface_create(struct weston_surface *wl_surface, uint32_t id_surface, + enum ivi_layout_surface_type surface_type) { struct ivi_layout *layout = get_instance(); struct ivi_layout_surface *ivisurf = NULL; @@ -1978,6 +1979,7 @@ surface_create(struct weston_surface *wl_surface, uint32_t id_surface) ivisurf->surface->height_from_buffer = 0; init_surface_properties(&ivisurf->prop); + ivisurf->prop.surface_type = surface_type; ivisurf->pending.prop = ivisurf->prop; @@ -2007,7 +2009,8 @@ ivi_layout_desktop_surface_create(struct weston_surface *wl_surface, struct ivi_layout *layout = get_instance(); struct ivi_layout_surface *ivisurf; - ivisurf = surface_create(wl_surface, IVI_INVALID_ID); + ivisurf = surface_create(wl_surface, IVI_INVALID_ID, + IVI_LAYOUT_SURFACE_TYPE_DESKTOP); ivisurf->weston_desktop_surface = surface; wl_signal_emit(&layout->surface_notification.created, ivisurf); @@ -2040,7 +2043,8 @@ ivi_layout_surface_create(struct weston_surface *wl_surface, return NULL; } - ivisurf = surface_create(wl_surface, id_surface); + ivisurf = surface_create(wl_surface, id_surface, + IVI_LAYOUT_SURFACE_TYPE_IVI); if (ivisurf) wl_signal_emit(&layout->surface_notification.created, ivisurf);