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>
This commit is contained in:
committed by
Marius Vlad
parent
72a6929467
commit
e7cf894fa2
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user