If ivilayer or ivisurf of ivi_view is made invisible in the commit_changes call, we have to damage the weston_view below this ivi_view. Otherwise content of this ivi_view will stay visible.
Signed-off-by: Emre Ucan <[email protected]> --- ivi-shell/ivi-layout.c | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c index 60d05c4..cc01de3 100644 --- a/ivi-shell/ivi-layout.c +++ b/ivi-shell/ivi-layout.c @@ -666,28 +666,35 @@ commit_changes(struct ivi_layout *layout) { struct ivi_layout_screen *iviscrn = NULL; struct ivi_layout_layer *ivilayer = NULL; + struct ivi_layout_surface *ivisurf = NULL; struct ivi_layout_view *ivi_view = NULL; - wl_list_for_each(iviscrn, &layout->screen_list, link) { - wl_list_for_each(ivilayer, &iviscrn->order.layer_list, order.link) { - /* - * If ivilayer is invisible, weston_view of ivisurf doesn't - * need to be modified. - */ - if (ivilayer->prop.visibility == false) - continue; + wl_list_for_each(ivi_view, &layout->view_list, link) { + ivilayer = ivi_view->on_layer; + ivisurf = ivi_view->ivisurf; + iviscrn = ivilayer->on_screen; - wl_list_for_each(ivi_view, &ivilayer->order.view_list, order_link) { - /* - * If ivilayer is invisible, weston_view of ivisurf doesn't - * need to be modified. - */ - if (ivi_view->ivisurf->prop.visibility == false) - continue; + /* + * If ivi_view is not visible on a screen, weston_view of ivi_view + * doesn't need to be modified. + */ + if (!wl_list_length(&ivi_view->order_link) || !iviscrn) + continue; - update_prop(iviscrn, ivilayer, ivi_view); - } + /* + * If ivilayer or ivisurf of ivi_view is made invisible in this + * commit_changes call, we have to damage the weston_view below this + * ivi_view. Otherwise content of this ivi_view will stay visible. + */ + if ((!ivilayer->prop.visibility && + (ivilayer->prop.event_mask & IVI_NOTIFICATION_VISIBILITY)) || + (!ivisurf->prop.visibility && + (ivisurf->prop.event_mask & IVI_NOTIFICATION_VISIBILITY))) { + weston_view_damage_below(ivi_view->view); + continue; } + + update_prop(iviscrn, ivilayer, ivi_view); } } -- 1.7.9.5 _______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
