diff --git a/src/backend/wayland/wl_event.c b/src/backend/wayland/wl_event.c index 4ff5877..6ca97ce 100644 --- a/src/backend/wayland/wl_event.c +++ b/src/backend/wayland/wl_event.c @@ -16,6 +16,8 @@ void wl_event_flush(void) (!wl_state.session || wl_state.session->active)) { wlr_scene_output_commit(wl_state.scene_output, NULL); wl_display_flush_clients(wl_state.display); + struct wl_event_loop *loop = wl_display_get_event_loop(wl_state.display); + wl_event_loop_dispatch(loop, 0); } } void wl_event_flush_expose(void) {} diff --git a/src/backend/wayland/wl_xwayland.c b/src/backend/wayland/wl_xwayland.c index 14ad860..ee29b4d 100644 --- a/src/backend/wayland/wl_xwayland.c +++ b/src/backend/wayland/wl_xwayland.c @@ -223,13 +223,13 @@ handle_xwayland_unmap(struct wl_listener *listener, void *data) if (desc && desc->parent_type == WCLASS_WINDOW) { WWindow *wwin = (WWindow *)desc->parent; WNativeWindow main_win = wwin->main_window; - wUnmanageWindow(wwin, False, True); WApplication *app = wApplicationOf(main_win); if (app) { - if (main_win == app->main_window) - app->refcount = 0; + app->refcount = 0; wApplicationDestroy(app); } + wwin->flags.destroyed = 1; + wUnmanageWindow(wwin, False, True); } } }