On Thu, Aug 18, 2016 at 04:45:30PM +0200, Quentin Glidic wrote: > From: Quentin Glidic <sardemff7+...@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 <br...@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+...@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@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/wayland-devel _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel