From a7ffa68e700c17fe5723ce1ec6a2a3b31586d6b3 Mon Sep 17 00:00:00 2001 From: Nobuhiko Tanibata Date: Wed, 9 Dec 2015 15:45:20 +0900 Subject: [PATCH] ivi-shell: hmi-controller supports multi screens at fullscreen mode. It shows ivi applications in fullscreen per screen like, The first screen: Application 1,4,5,6,,,, The seconed screen: Application 2, The third screen: Application 3 Thie mode assigns one application to each screen at first. And remaind applications more than screens will be assigned to the first screen. Signed-off-by: Nobuhiko Tanibata Reviewed-by: Pekka Paalanen --- ivi-shell/hmi-controller.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ivi-shell/hmi-controller.c b/ivi-shell/hmi-controller.c index 55e70fb7..9b69dd20 100644 --- a/ivi-shell/hmi-controller.c +++ b/ivi-shell/hmi-controller.c @@ -367,6 +367,10 @@ mode_fullscreen_someone(struct hmi_controller *hmi_ctrl, struct ivi_layout_surface *ivisurf = NULL; int32_t i = 0; const uint32_t duration = hmi_ctrl->hmi_setting->transition_duration; + int32_t surf_num = 0; + struct ivi_layout_surface **surfaces; + + surfaces = MEM_ALLOC(sizeof(*surfaces) * surface_length); for (i = 0; i < surface_length; i++) { ivisurf = pp_surface[i]; @@ -375,6 +379,18 @@ mode_fullscreen_someone(struct hmi_controller *hmi_ctrl, if (is_surf_in_ui_widget(hmi_ctrl, ivisurf)) continue; + surfaces[surf_num++] = ivisurf; + } + ivi_layout_interface->layer_set_render_order(layer->ivilayer, surfaces, surf_num); + + for (i = 0; i < surf_num; i++) { + ivisurf = surfaces[i]; + + if ((i > 0) && (i < hmi_ctrl->screen_num)) { + layer = wl_container_of(layer->link.prev, layer, link); + ivi_layout_interface->layer_set_render_order(layer->ivilayer, &ivisurf, 1); + } + ivi_layout_interface->surface_set_transition(ivisurf, IVI_LAYOUT_TRANSITION_VIEW_DEFAULT, duration); @@ -383,6 +399,8 @@ mode_fullscreen_someone(struct hmi_controller *hmi_ctrl, surface_width, surface_height); } + + free(surfaces); } static void