diff options
-rw-r--r-- | src/desktop.c | 15 | ||||
-rw-r--r-- | src/ivi-compositor.h | 3 | ||||
-rw-r--r-- | 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; } |