[PATCH weston] libweston-desktop/xwayland: Do not over-destroy the view

Bryce Harrington bryce at osg.samsung.com
Tue Aug 30 00:26:06 UTC 2016


On Thu, Aug 18, 2016 at 04:45:30PM +0200, Quentin Glidic wrote:
> From: Quentin Glidic <sardemff7+git at sardemff7.net>
> 
> With this weston_view_destroy() call, Xwayland popups make Weston freeze
> in a busy-loop (probably corrupted wl_list).

Looks like weston_desktop_surface_unlink_view() calls
weston_desktop_view_destroy() for the specified surface->view, and that
in turn will call weston_view_destroy() on the view (if it is
parentless), and then frees it.

So, you're right, the view is definitely going gone once
weston_desktop_surface_unlink_view() is done, and can't be used by any
subsequent calls.

Reviewed-by: Bryce Harrington <bryce at osg.samsung.com>

This fix is okayed to land for the release, and can be landed either
pre- or post- beta.
 
> Signed-off-by: Quentin Glidic <sardemff7+git at sardemff7.net>
> ---
>  libweston-desktop/xwayland.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/libweston-desktop/xwayland.c b/libweston-desktop/xwayland.c
> index cb08323..bd68bc6 100644
> --- a/libweston-desktop/xwayland.c
> +++ b/libweston-desktop/xwayland.c
> @@ -152,13 +152,11 @@ weston_desktop_xwayland_surface_destroy(struct weston_desktop_surface *dsurface,
>  	wl_list_remove(&surface->resource_destroy_listener.link);
>  
>  	weston_desktop_surface_unset_relative_to(surface->surface);
> -	if (surface->added) {
> +	if (surface->added)
>  		weston_desktop_api_surface_removed(surface->desktop,
>  						   surface->surface);
> -	} else if (surface->state == XWAYLAND) {
> +	else if (surface->state == XWAYLAND)
>  		weston_desktop_surface_unlink_view(surface->view);
> -		weston_view_destroy(surface->view);
> -	}
>  
>  	free(surface);
>  }
> -- 
> 2.9.2
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list