summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>2014-06-03 15:09:45 +0900
committerNobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>2014-06-03 18:02:10 +0900
commit013948d48c67aa010afc9dfbd6098c447a1effcd (patch)
tree1da510c3b1bcc4d5fa15e275ef8da8cfde288ae2
parent5c14a0360d41e8a828d238cfa5379143ca98cf1a (diff)
downloadweston-013948d48c67aa010afc9dfbd6098c447a1effcd.tar.gz
Remove layer from render order of screen when screen cleared.
Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
-rw-r--r--ivi-shell/ivi-layout.c20
1 files 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;
}