diff options
Diffstat (limited to 'src/layout.c')
-rw-r--r-- | src/layout.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/layout.c b/src/layout.c index 332b4d7..7a1e0e0 100644 --- a/src/layout.c +++ b/src/layout.c @@ -225,19 +225,24 @@ ivi_layout_activate_complete(struct ivi_output *output, } weston_view_set_output(view, woutput); - weston_view_set_position(view, - woutput->x + output->area.x, - woutput->y + output->area.y); + + if (surf->role != IVI_SURFACE_ROLE_BACKGROUND) + weston_view_set_position(view, + woutput->x + output->area.x, + woutput->y + output->area.y); view->is_mapped = true; surf->mapped = true; view->surface->is_mapped = true; if (output->active) { - output->active->view->is_mapped = false; - output->active->view->surface->is_mapped = false; + /* keep the background surface mapped at all times */ + if (output->active->role != IVI_SURFACE_ROLE_BACKGROUND) { + output->active->view->is_mapped = false; + output->active->view->surface->is_mapped = false; - weston_layer_entry_remove(&output->active->view->layer_link); + weston_layer_entry_remove(&output->active->view->layer_link); + } } output->previous_active = output->active; output->active = surf; @@ -854,6 +859,13 @@ ivi_layout_activate_by_surf(struct ivi_output *output, struct ivi_surface *surf) return; } + /* the background surface is already "maximized" so we don't need to + * add to the hidden layer */ + if (surf->role == IVI_SURFACE_ROLE_BACKGROUND) { + ivi_layout_activate_complete(output, surf); + return; + } + ivi_layout_add_to_hidden_layer(surf, output); } |