The X cleanup code uses wxs->wm to check if the WM has been created - but that variable was never initialized. So if X crashes, the WM doesn't get destroyed, causing a crash when it tries to repaint a window.
Signed-off-by: Dima Ryazanov <[email protected]> --- xwayland/launcher.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/xwayland/launcher.c b/xwayland/launcher.c index 70703a4..fad6219 100644 --- a/xwayland/launcher.c +++ b/xwayland/launcher.c @@ -43,7 +43,7 @@ handle_sigusr1(int signal_number, void *data) /* We'd be safer if we actually had the struct * signalfd_siginfo from the signalfd data and could verify * this came from Xwayland.*/ - weston_wm_create(wxs, wxs->wm_fd); + wxs->wm = weston_wm_create(wxs, wxs->wm_fd); wl_event_source_remove(wxs->sigusr1_source); return 1; @@ -159,8 +159,10 @@ weston_xserver_shutdown(struct weston_xserver *wxs) } close(wxs->abstract_fd); close(wxs->unix_fd); - if (wxs->wm) + if (wxs->wm) { weston_wm_destroy(wxs->wm); + wxs->wm = NULL; + } wxs->loop = NULL; } -- 1.9.1 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
