[PATCH weston] desktop-shell: initialize children link
Kristian Høgsberg
hoegsberg at gmail.com
Sat Feb 1 01:29:45 PST 2014
On Tue, Jan 28, 2014 at 01:54:16PM +0100, pochu27 at gmail.com wrote:
> 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.
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
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
More information about the wayland-devel
mailing list