[PATCH weston] desktop-shell: initialize children link

pochu27 at gmail.com pochu27 at gmail.com
Tue Jan 28 04:54:16 PST 2014


From: Emilio Pozuelo Monfort <emilio.pozuelo at collabora.co.uk>

Since commit 9046d2, when destroying a surface, we remove all the
links from its children. But when the child surfaces are destroyed,
those links will be removed again, but since they were not properly
initialized, weston will crash.

Call shell_surface_set_parent instead which removes the link and
sets parent while also initializing the link, thus avoiding this
crash.
---
 desktop-shell/shell.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index c275543..111a7aa 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -2927,10 +2927,8 @@ destroy_shell_surface(struct shell_surface *shsurf)
 	weston_view_destroy(shsurf->view);
 
 	wl_list_remove(&shsurf->children_link);
-	wl_list_for_each_safe(child, next, &shsurf->children_list, children_link) {
-		wl_list_remove(&child->children_link);
-		child->parent = NULL;
-	}
+	wl_list_for_each_safe(child, next, &shsurf->children_list, children_link)
+		shell_surface_set_parent(child, NULL);
 
 	wl_list_remove(&shsurf->link);
 	free(shsurf);
-- 
1.8.5.3



More information about the wayland-devel mailing list