From: Nobuhiko Tanibata <nobuhiko_tanib...@xddp.denso.co.jp> Previous code cleaned up surfaces in layer once and then added surfaces to a layer in random. In this flow, two commitchanges are required.
This patch proposes that it avoids calling add_surface if a surface is already added to a layer in random. In this flow, cleaning up surfaces is not required. Signed-off-by: Nobuhiko Tanibata <nobuhiko_tanib...@xddp.denso.co.jp> --- ivi-shell/hmi-controller.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/ivi-shell/hmi-controller.c b/ivi-shell/hmi-controller.c index 77426bc..8a81f5c 100644 --- a/ivi-shell/hmi-controller.c +++ b/ivi-shell/hmi-controller.c @@ -418,24 +418,18 @@ mode_random_replace(struct hmi_controller *hmi_ctrl, struct ivi_layout_surface *ivisurf = NULL; const uint32_t duration = hmi_ctrl->hmi_setting->transition_duration; int32_t i = 0; + int32_t j = 0; int32_t layer_idx = 0; + int32_t surface_len_on_layer = 0; + struct ivi_layout_surface **ivisurfs = NULL; layers = MEM_ALLOC(sizeof(*layers) * hmi_ctrl->screen_num); wl_list_for_each(application_layer, layer_list, link) { layers[layer_idx] = application_layer; - ivi_layout_interface->layer_set_render_order(layers[layer_idx]->ivilayer, - NULL, 0); layer_idx++; } - /* - * This commit change is needed because ivisurface can not belongs to several layers - * at the same time. So ivisurfaces shall be removed from layers once and then set them - * to layers randomly. - */ - ivi_layout_interface->commit_changes(); - for (i = 0; i < surface_length; i++) { ivisurf = pp_surface[i]; @@ -463,6 +457,19 @@ mode_random_replace(struct hmi_controller *hmi_ctrl, surface_width, surface_height); + ivi_layout_interface + ->get_surfaces_on_layer(layers[layer_idx]->ivilayer, + &surface_len_on_layer, + &ivisurfs); + + for (j = 0; j < surface_len_on_layer; j++) { + if (ivisurf == ivisurfs[j]) + break; + } + + if (j < surface_len_on_layer) + continue; + ivi_layout_interface->layer_add_surface(layers[layer_idx]->ivilayer, ivisurf); } -- 1.8.3.1 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel