[gnome-settings-daemon] media-keys: Be more careful when finalizing



commit 42f9427729d763e7fd62aec9e15b036531489682
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Jan 20 09:00:54 2012 -0500

    media-keys: Be more careful when finalizing
    
    The keys array is initalized in an idle, so if we go right back down
    because another instance of gsd is already running, we crash in
    finalize, trying to clear a nonexisting array.

 plugins/media-keys/gsd-media-keys-manager.c |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)
---
diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
index 14ff09f..61e3a56 100644
--- a/plugins/media-keys/gsd-media-keys-manager.c
+++ b/plugins/media-keys/gsd-media-keys-manager.c
@@ -2209,16 +2209,18 @@ gsd_media_keys_manager_stop (GsdMediaKeysManager *manager)
 
         gdk_error_trap_push ();
 
-        for (i = 0; i < priv->keys->len; ++i) {
-                MediaKey *key;
+        if (priv->keys != NULL) {
+                for (i = 0; i < priv->keys->len; ++i) {
+                        MediaKey *key;
 
-                key = g_ptr_array_index (manager->priv->keys, i);
+                        key = g_ptr_array_index (manager->priv->keys, i);
 
-                if (key->key)
-                        grab_key_unsafe (key->key, FALSE, priv->screens);
+                        if (key->key)
+                                grab_key_unsafe (key->key, FALSE, priv->screens);
+                }
+                g_ptr_array_free (priv->keys, TRUE);
+                priv->keys = NULL;
         }
-        g_ptr_array_free (priv->keys, TRUE);
-        priv->keys = NULL;
 
         gdk_flush ();
         gdk_error_trap_pop_ignored ();



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