diff options
author | Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> | 2015-12-09 15:43:30 +0900 |
---|---|---|
committer | Pekka Paalanen <pekka.paalanen@collabora.co.uk> | 2015-12-14 13:16:11 +0200 |
commit | a8aa91c0d1cb16bab00145c966e1ee139168fcef (patch) | |
tree | bf615c3310fd0feceff4b035c0fc0ae29e6cd22b | |
parent | d789c66a0fede70543e5532da60acc972cb09a9d (diff) | |
download | weston-a8aa91c0d1cb16bab00145c966e1ee139168fcef.tar.gz |
ivi-shell: hmi-controller supports multi screens at tiling mode.
It shows 8 ivi applications in a screen at tiling. It moves additional
application more than 8xN to next screen N+1.
Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-rw-r--r-- | ivi-shell/hmi-controller.c | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/ivi-shell/hmi-controller.c b/ivi-shell/hmi-controller.c index 4b208488..d5b11ed1 100644 --- a/ivi-shell/hmi-controller.c +++ b/ivi-shell/hmi-controller.c @@ -224,10 +224,11 @@ mode_divided_into_tiling(struct hmi_controller *hmi_ctrl, struct ivi_layout_surface **surfaces; struct ivi_layout_surface **new_order; const uint32_t duration = hmi_ctrl->hmi_setting->transition_duration; + struct ivi_layout_layer *ivilayer = NULL; int32_t i = 0; int32_t surf_num = 0; - uint32_t num = 1; + int32_t idx = 0; surfaces = MEM_ALLOC(sizeof(*surfaces) * surface_length); new_order = MEM_ALLOC(sizeof(*surfaces) * surface_length); @@ -242,16 +243,23 @@ mode_divided_into_tiling(struct hmi_controller *hmi_ctrl, surfaces[surf_num++] = ivisurf; } - for (i = 0; i < surf_num; i++) { - ivisurf = surfaces[i]; - new_order[i] = ivisurf; + wl_list_for_each_reverse(layer, layer_list, link) { + if (idx >= surf_num) + break; + + ivilayer = layer->ivilayer; - if (num <= 8) { - if (num < 5) { - surface_x = (int32_t)((num - 1) * (surface_width)); + for (i = 0; i < 8; i++, idx++) { + if (idx >= surf_num) + break; + + ivisurf = surfaces[idx]; + new_order[i] = ivisurf; + if (i < 4) { + surface_x = (int32_t)(i * (surface_width)); surface_y = 0; } else { - surface_x = (int32_t)((num - 5) * (surface_width)); + surface_x = (int32_t)((i - 4) * (surface_width)); surface_y = (int32_t)surface_height; } @@ -264,17 +272,15 @@ mode_divided_into_tiling(struct hmi_controller *hmi_ctrl, (int32_t)surface_width, (int32_t)surface_height); - num++; - continue; } - ivi_layout_interface->surface_set_visibility(ivisurf, false); - } + ivi_layout_interface->layer_set_render_order(ivilayer, new_order, i); - if (surf_num > 0) { - ivi_layout_interface->layer_set_transition(layer->ivilayer, - IVI_LAYOUT_TRANSITION_LAYER_VIEW_ORDER, - duration); + ivi_layout_interface->layer_set_transition(ivilayer, + IVI_LAYOUT_TRANSITION_LAYER_VIEW_ORDER, + duration); } + for (i = idx; i < surf_num; i++) + ivi_layout_interface->surface_set_visibility(surfaces[i], false); free(surfaces); free(new_order); |