summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>2014-06-19 14:22:13 +0900
committerNobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>2014-06-20 13:43:39 +0900
commit57ec75edcc3efeec3687bb97e78130392f15451d (patch)
tree022ee4e42d432c43340121db93042e7a330cfb48
parent8e4e9cb2e1af6cabbada30f7d19b65b452dc7e6d (diff)
downloadweston-57ec75edcc3efeec3687bb97e78130392f15451d.tar.gz
Add callbacks of surface listener.
Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
-rw-r--r--ivi-shell/ivi-layout.c51
1 files changed, 35 insertions, 16 deletions
diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c
index 0e7492a4..0c02ea64 100644
--- a/ivi-shell/ivi-layout.c
+++ b/ivi-shell/ivi-layout.c
@@ -849,29 +849,47 @@ commit_list_layer(struct ivi_layout *layout)
continue;
}
- wl_list_for_each_safe(ivisurf, next,
- &ivilayer->order.list_surface, order.link) {
- remove_ordersurface_from_layer(ivisurf);
+ if (ivilayer->event_mask & IVI_NOTIFICATION_REMOVE) {
+ wl_list_for_each_safe(ivisurf, next,
+ &ivilayer->order.list_surface, order.link) {
+ remove_ordersurface_from_layer(ivisurf);
- if (!wl_list_empty(&ivisurf->order.link)) {
- wl_list_remove(&ivisurf->order.link);
+ if (!wl_list_empty(&ivisurf->order.link)) {
+ wl_list_remove(&ivisurf->order.link);
+ }
+
+ wl_list_init(&ivisurf->order.link);
+ ivisurf->event_mask |= IVI_NOTIFICATION_REMOVE;
}
- wl_list_init(&ivisurf->order.link);
+ wl_list_init(&ivilayer->order.list_surface);
}
- wl_list_init(&ivilayer->order.list_surface);
- wl_list_for_each(ivisurf, &ivilayer->pending.list_surface,
- pending.link) {
- if(!wl_list_empty(&ivisurf->order.link)){
- wl_list_remove(&ivisurf->order.link);
+ if (ivilayer->event_mask & IVI_NOTIFICATION_ADD) {
+ wl_list_for_each_safe(ivisurf, next,
+ &ivilayer->order.list_surface, order.link) {
+ remove_ordersurface_from_layer(ivisurf);
+
+ if (!wl_list_empty(&ivisurf->order.link)) {
+ wl_list_remove(&ivisurf->order.link);
+ }
+
wl_list_init(&ivisurf->order.link);
}
- wl_list_insert(&ivilayer->order.list_surface,
- &ivisurf->order.link);
- add_ordersurface_to_layer(ivisurf, ivilayer);
- ivisurf->event_mask = IVI_NOTIFICATION_ADD;
+ wl_list_init(&ivilayer->order.list_surface);
+ wl_list_for_each(ivisurf, &ivilayer->pending.list_surface,
+ pending.link) {
+ if(!wl_list_empty(&ivisurf->order.link)){
+ wl_list_remove(&ivisurf->order.link);
+ wl_list_init(&ivisurf->order.link);
+ }
+
+ wl_list_insert(&ivilayer->order.list_surface,
+ &ivisurf->order.link);
+ add_ordersurface_to_layer(ivisurf, ivilayer);
+ ivisurf->event_mask |= IVI_NOTIFICATION_ADD;
+ }
}
}
}
@@ -2041,6 +2059,7 @@ ivi_layout_layerSetRenderOrder(struct ivi_layout_layer *ivilayer,
}
if (pSurface == NULL) {
+ ivilayer->event_mask |= IVI_NOTIFICATION_REMOVE;
return 0;
}
@@ -2629,7 +2648,7 @@ ivi_layout_layerRemoveSurface(struct ivi_layout_layer *ivilayer,
}
}
- ivilayer->event_mask |= IVI_NOTIFICATION_REMOVE;
+ remsurf->event_mask |= IVI_NOTIFICATION_REMOVE;
return 0;
}