diff --git a/src/wayland/meta-wayland-keyboard.c b/src/wayland/meta-wayland-keyboard.c index 7015faee8..1306bd3c0 100644 --- a/src/wayland/meta-wayland-keyboard.c +++ b/src/wayland/meta-wayland-keyboard.c @@ -380,6 +380,8 @@ meta_wayland_keyboard_release (MetaWaylandKeyboard *keyboard) wl_array_release (&keyboard->pressed_keys); g_object_unref (keyboard->settings); + + keyboard->display = NULL; } static void @@ -517,6 +519,9 @@ void meta_wayland_keyboard_set_focus (MetaWaylandKeyboard *keyboard, MetaWaylandSurface *surface) { + if (keyboard->display == NULL) + return; + if (keyboard->focus_surface == surface) return; diff --git a/src/wayland/meta-wayland-pointer.c b/src/wayland/meta-wayland-pointer.c index 27c3e8c72..4b0811a0f 100644 --- a/src/wayland/meta-wayland-pointer.c +++ b/src/wayland/meta-wayland-pointer.c @@ -216,6 +216,8 @@ meta_wayland_pointer_release (MetaWaylandPointer *pointer) { meta_wayland_pointer_set_focus (pointer, NULL); set_cursor_surface (pointer, NULL); + + pointer->display = NULL; } static int @@ -476,6 +478,9 @@ void meta_wayland_pointer_set_focus (MetaWaylandPointer *pointer, MetaWaylandSurface *surface) { + if (pointer->display == NULL) + return; + if (pointer->focus_surface == surface) return;