From ff8c4b1bcf1ecb30282c3b6ebe2574a4a520265a Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sun, 23 Feb 2014 09:59:42 -0500 Subject: [PATCH] pointer/keyboard: Fix segfault once more If the resource is destroyed before the surface, then we'll kill ourselves. Why can I never seem to write these correctly... --- src/wayland/meta-wayland-keyboard.c | 7 +++++-- src/wayland/meta-wayland-pointer.c | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/wayland/meta-wayland-keyboard.c b/src/wayland/meta-wayland-keyboard.c index 198996e2b..c357b77f1 100644 --- a/src/wayland/meta-wayland-keyboard.c +++ b/src/wayland/meta-wayland-keyboard.c @@ -225,8 +225,11 @@ keyboard_handle_focus_surface_destroy (struct wl_listener *listener, void *data) wl_list_remove (&keyboard->focus_surface_listener.link); keyboard->focus_surface = NULL; - wl_list_remove (&keyboard->focus_resource_listener.link); - keyboard->focus_resource = NULL; + if (keyboard->focus_resource) + { + wl_list_remove (&keyboard->focus_resource_listener.link); + keyboard->focus_resource = NULL; + } } static void diff --git a/src/wayland/meta-wayland-pointer.c b/src/wayland/meta-wayland-pointer.c index e554cb6a2..21e41bb80 100644 --- a/src/wayland/meta-wayland-pointer.c +++ b/src/wayland/meta-wayland-pointer.c @@ -63,8 +63,11 @@ pointer_handle_focus_surface_destroy (struct wl_listener *listener, void *data) wl_list_remove (&pointer->focus_surface_listener.link); pointer->focus_surface = NULL; - wl_list_remove (&pointer->focus_resource_listener.link); - pointer->focus_resource = NULL; + if (pointer->focus_resource) + { + wl_list_remove (&pointer->focus_resource_listener.link); + pointer->focus_resource = NULL; + } } static void