[mutter/wayland] pointer/keyboard: Fix segfault once more



commit ff8c4b1bcf1ecb30282c3b6ebe2574a4a520265a
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Sun Feb 23 09:59:42 2014 -0500

    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 198996e..c357b77 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 e554cb6..21e41bb 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]