[clutter/clutter-1.18] device-manager: Don't emit device-removed with a finalized instance



commit 1d11cc324e8ce1741528c61af92ca27e9f4bcfa0
Author: Rui Matos <tiagomatos gmail com>
Date:   Thu Nov 21 14:46:04 2013 +0100

    device-manager: Don't emit device-removed with a finalized instance
    
    https://bugzilla.gnome.org/show_bug.cgi?id=712812

 clutter/clutter-device-manager.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)
---
diff --git a/clutter/clutter-device-manager.c b/clutter/clutter-device-manager.c
index dbb06a9..32a6e8a 100644
--- a/clutter/clutter-device-manager.c
+++ b/clutter/clutter-device-manager.c
@@ -368,9 +368,14 @@ _clutter_device_manager_remove_device (ClutterDeviceManager *device_manager,
   manager_class = CLUTTER_DEVICE_MANAGER_GET_CLASS (device_manager);
   g_assert (manager_class->remove_device != NULL);
 
-  manager_class->remove_device (device_manager, device);
+  /* The subclass remove_device() method will likely unref it but we
+     have to keep it alive during the signal emission. */
+  g_object_ref (device);
 
+  manager_class->remove_device (device_manager, device);
   g_signal_emit (device_manager, manager_signals[DEVICE_REMOVED], 0, device);
+
+  g_object_unref (device);
 }
 
 /*


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