ivi-shell: fix cleanup of desktop surfaces

The ivi-shell keeps track of its surfaces by adding them to the ivi_surface_list
to be able to remove them on shutdown. It also creates an ivi_layout_surface for
a desktop surface, but does not keep track of these surfaces.

During compositor shutdown, libweston prints the following message:

	BUG: finalizing a layer with views still on it.

Fix it by adding the created ivi_layout_surface to the ivi_surface_list to
remove the surfaces from the layer during shutdown.

Furthermore, remove the ivi_layout_surface from the desktop surface and free it
when the desktop surface is destroyed.

Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>
(cherry picked from commit 266e2e1d4866ef7c39cff0b77f1e404d0dc96b55)

Resolved small conflict which arose due to commit cbf476f208fbdcefe.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
dev
Michael Tretter 2 years ago committed by Marius Vlad
parent 72a6929467
commit e7cf894fa2
  1. 8
      ivi-shell/ivi-shell.c

@ -507,6 +507,8 @@ desktop_surface_added(struct weston_desktop_surface *surface,
ivisurf->layout_surface = layout_surface; ivisurf->layout_surface = layout_surface;
ivisurf->surface = weston_surf; ivisurf->surface = weston_surf;
wl_list_insert(&shell->ivi_surface_list, &ivisurf->link);
weston_desktop_surface_set_user_data(surface, ivisurf); weston_desktop_surface_set_user_data(surface, ivisurf);
} }
@ -519,8 +521,14 @@ desktop_surface_removed(struct weston_desktop_surface *surface,
assert(ivisurf != NULL); assert(ivisurf != NULL);
weston_desktop_surface_set_user_data(surface, NULL);
if (ivisurf->layout_surface) if (ivisurf->layout_surface)
layout_surface_cleanup(ivisurf); layout_surface_cleanup(ivisurf);
wl_list_remove(&ivisurf->link);
free(ivisurf);
} }
static void static void

Loading…
Cancel
Save