From 0e4d30b44e0b1614ce5e0a2d63c808e704d13ee2 Mon Sep 17 00:00:00 2001 From: Marius Vlad Date: Fri, 29 May 2020 20:16:08 +0300 Subject: [PATCH] src/: Add all surface roles to a wrapper for retrieving the output Adds the other surface roles to the it. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad Change-Id: Ia0c659bfd0dbf96d53ee6f24d3c4296b3ffdad2d --- src/desktop.c | 15 ++------------- src/ivi-compositor.h | 3 +++ src/layout.c | 15 +++++++++++++-- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/desktop.c b/src/desktop.c index 7502d6c..90131c2 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -112,19 +112,8 @@ desktop_surface_removed(struct weston_desktop_surface *dsurface, void *userdata) struct weston_surface *wsurface = weston_desktop_surface_get_surface(dsurface); - struct ivi_output *output; - - if (surface->role == IVI_SURFACE_ROLE_DESKTOP) - output = surface->desktop.last_output; - else if (surface->role == IVI_SURFACE_ROLE_POPUP) - output = surface->popup.output; - else if (surface->role == IVI_SURFACE_ROLE_SPLIT_H || - surface->role == IVI_SURFACE_ROLE_SPLIT_V) - output = surface->split.output; - else if (surface->role == IVI_SURFACE_ROLE_FULLSCREEN) - output = surface->fullscreen.output; - else - return; + struct ivi_output *output = ivi_layout_get_output_from_surface(surface); + assert(output != NULL); /* resize the active surface to the original size */ if (surface->role == IVI_SURFACE_ROLE_SPLIT_H || diff --git a/src/ivi-compositor.h b/src/ivi-compositor.h index 99ef550..5244afe 100644 --- a/src/ivi-compositor.h +++ b/src/ivi-compositor.h @@ -334,4 +334,7 @@ void ivi_layout_desktop_resize(struct ivi_surface *surface, struct weston_geometry area); +struct ivi_output * +ivi_layout_get_output_from_surface(struct ivi_surface *surf); + #endif diff --git a/src/layout.c b/src/layout.c index 1466fdb..b1ee3f3 100644 --- a/src/layout.c +++ b/src/layout.c @@ -636,7 +636,7 @@ ivi_layout_activate(struct ivi_output *output, const char *app_id) } } -static struct ivi_output * +struct ivi_output * ivi_layout_get_output_from_surface(struct ivi_surface *surf) { struct ivi_output *ivi_output = NULL; @@ -651,10 +651,21 @@ ivi_layout_get_output_from_surface(struct ivi_surface *surf) case IVI_SURFACE_ROLE_POPUP: ivi_output = surf->popup.output; break; - default: case IVI_SURFACE_ROLE_BACKGROUND: + ivi_output = surf->bg.output; + break; case IVI_SURFACE_ROLE_PANEL: + ivi_output = surf->panel.output; + break; + case IVI_SURFACE_ROLE_FULLSCREEN: + ivi_output = surf->fullscreen.output; + break; + case IVI_SURFACE_ROLE_SPLIT_H: + case IVI_SURFACE_ROLE_SPLIT_V: + ivi_output = surf->split.output; + break; case IVI_SURFACE_ROLE_NONE: + default: break; } -- 2.16.6