From 013948d48c67aa010afc9dfbd6098c447a1effcd Mon Sep 17 00:00:00 2001 From: Nobuhiko Tanibata Date: Tue, 3 Jun 2014 15:09:45 +0900 Subject: Remove layer from render order of screen when screen cleared. Signed-off-by: Nobuhiko Tanibata --- ivi-shell/ivi-layout.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c index b15f7cc9..68388602 100644 --- a/ivi-shell/ivi-layout.c +++ b/ivi-shell/ivi-layout.c @@ -870,6 +870,20 @@ commit_list_screen(struct ivi_layout *layout) struct ivi_layout_surface *ivisurf = NULL; wl_list_for_each(iviscrn, &layout->list_screen, link) { + if (iviscrn->event_mask & IVI_NOTIFICATION_REMOVE) { + wl_list_for_each_safe(ivilayer, next, + &iviscrn->order.list_layer, order.link) { + remove_orderlayer_from_screen(ivilayer); + + if (!wl_list_empty(&ivilayer->order.link)) { + wl_list_remove(&ivilayer->order.link); + } + + wl_list_init(&ivilayer->order.link); + ivilayer->event_mask |= IVI_NOTIFICATION_REMOVE; + } + } + if (iviscrn->event_mask & IVI_NOTIFICATION_ADD) { wl_list_for_each_safe(ivilayer, next, &iviscrn->order.list_layer, order.link) { @@ -888,11 +902,12 @@ commit_list_screen(struct ivi_layout *layout) wl_list_insert(&iviscrn->order.list_layer, &ivilayer->order.link); add_orderlayer_to_screen(ivilayer, iviscrn); - ivilayer->event_mask = IVI_NOTIFICATION_ADD; + ivilayer->event_mask |= IVI_NOTIFICATION_ADD; } - iviscrn->event_mask = 0; } + iviscrn->event_mask = 0; + /* Clear view list of layout layer */ wl_list_init(&layout->layout_layer.view_list); @@ -2308,6 +2323,7 @@ ivi_layout_screenSetRenderOrder(struct ivi_layout_screen *iviscrn, wl_list_init(&iviscrn->pending.list_layer); if (pLayer == NULL) { + iviscrn->event_mask |= IVI_NOTIFICATION_REMOVE; return 0; } -- cgit v1.2.1