From 881d1c9bc234e203cff033ea02998ce99f3070cd Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 18 Jun 2022 16:48:58 +1000 Subject: Fix crash in wayland when closing a window The focus_pointer only pointer was only cleared when the window existed, which caused a dangling focus_pointer when closing a window. --- intern/ghost/intern/GHOST_SystemWayland.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/intern/ghost/intern/GHOST_SystemWayland.cpp b/intern/ghost/intern/GHOST_SystemWayland.cpp index 2d1337df1de..bff96b3c0a4 100644 --- a/intern/ghost/intern/GHOST_SystemWayland.cpp +++ b/intern/ghost/intern/GHOST_SystemWayland.cpp @@ -1161,12 +1161,13 @@ static void pointer_handle_leave(void *data, uint32_t /*serial*/, struct wl_surface *surface) { + /* First clear the `focus_pointer`, since the window won't exist when closing the window. */ + static_cast(data)->focus_pointer = nullptr; + GHOST_IWindow *win = window_from_surface(surface); if (!win) { return; } - - static_cast(data)->focus_pointer = nullptr; static_cast(win)->deactivate(); } -- cgit v1.2.3