ivi-layout: unmap desktop surfaces in ivi_view_destroy()

weston_desktop_surface_unlink_view() does now call weston_view_destroy() so the
weston_view is not destroyed here. This is a problem because the view remains in
the weston_layer view_list. If ivi_view_destroy() is called from
ivi_layout_surface_destroy() and the view list is rebuilt in the 'removed'
signal, then the list gets corrupted when the view is destroyed immediately
afterwards.
Fix this by calling weston_view_destroy() unconditionally for all view.

Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
dev
Michael Olbrich 5 years ago committed by Daniel Stone
parent 640109cf5e
commit 6ef2d45a2d
  1. 3
      ivi-shell/ivi-layout.c

@ -155,8 +155,7 @@ ivi_view_destroy(struct ivi_layout_view *ivi_view)
if (weston_surface_is_desktop_surface(ivi_view->ivisurf->surface)) if (weston_surface_is_desktop_surface(ivi_view->ivisurf->surface))
weston_desktop_surface_unlink_view(ivi_view->view); weston_desktop_surface_unlink_view(ivi_view->view);
else weston_view_destroy(ivi_view->view);
weston_view_destroy(ivi_view->view);
free(ivi_view); free(ivi_view);
} }

Loading…
Cancel
Save