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.
dev
Emilio Pozuelo Monfort 11 years ago committed by Kristian Høgsberg
parent 38b58eba74
commit adaa20c017
  1. 6
      desktop-shell/shell.c

@ -2927,10 +2927,8 @@ destroy_shell_surface(struct shell_surface *shsurf)
weston_view_destroy(shsurf->view); weston_view_destroy(shsurf->view);
wl_list_remove(&shsurf->children_link); wl_list_remove(&shsurf->children_link);
wl_list_for_each_safe(child, next, &shsurf->children_list, children_link) { wl_list_for_each_safe(child, next, &shsurf->children_list, children_link)
wl_list_remove(&child->children_link); shell_surface_set_parent(child, NULL);
child->parent = NULL;
}
wl_list_remove(&shsurf->link); wl_list_remove(&shsurf->link);
free(shsurf); free(shsurf);

Loading…
Cancel
Save