From adaa20c017a549593e2a735a2d8a73edc9c17b6d Mon Sep 17 00:00:00 2001 From: Emilio Pozuelo Monfort Date: Tue, 28 Jan 2014 13:54:16 +0100 Subject: [PATCH] desktop-shell: initialize children link 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 756bbdc9..7d85a7be 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);