On Tue, Jan 28, 2014 at 01:54:16PM +0100, [email protected] wrote:
> From: Emilio Pozuelo Monfort <[email protected]>
>
> 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.
Yup, good catch.
Kristian
> ---
> 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
>
> _______________________________________________
> wayland-devel mailing list
> [email protected]
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel