diff options
author | Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> | 2014-06-19 14:22:13 +0900 |
---|---|---|
committer | Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> | 2014-06-20 13:43:39 +0900 |
commit | 57ec75edcc3efeec3687bb97e78130392f15451d (patch) | |
tree | 022ee4e42d432c43340121db93042e7a330cfb48 | |
parent | 8e4e9cb2e1af6cabbada30f7d19b65b452dc7e6d (diff) | |
download | weston-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.c | 51 |
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; } |