Commit a4931451 authored by Michael Olbrich's avatar Michael Olbrich

ivi-shell: fix destroying view that are not shown

Both the core in weston_compositor_build_view_list() with view.link and the
ivi-shell in commit_screen_list() with view.layer_link don't remove the old
views from the list.
As a result, all views that are not currently in the list have old broken
links. Destroying such a view tries to remove the view from these lists and
will access the old, invalid pointers.

Fix this by unmapping all invisible views before the lists are rebuilt.
This removes the views from the lists and all pointer remain valid.
Signed-off-by: Michael Olbrich's avatarMichael Olbrich <m.olbrich@pengutronix.de>
parent bff27cb8
Pipeline #5900 passed with stage
in 4 minutes and 37 seconds
......@@ -772,6 +772,12 @@ commit_layer_list(struct ivi_layout *layout)
ivilayer->order.dirty = 0;
}
wl_list_for_each(ivi_view, &layout->view_list, link) {
if (wl_list_empty(&ivi_view->pending_link) ||
ivi_view->ivisurf->prop.visibility == false ||
ivi_view->on_layer->prop.visibility == false)
weston_view_unmap(ivi_view->view);
}
}
static void
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment