diff options
-rw-r--r-- | plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c | 6 | ||||
-rw-r--r-- | plugins/gconf/gsd-gconf-manager.c | 162 | ||||
-rw-r--r-- | plugins/keybindings/gsd-keybindings-manager.c | 13 | ||||
-rw-r--r-- | plugins/mouse/gsd-mouse-manager.c | 12 | ||||
-rw-r--r-- | plugins/sound/gsd-sound-manager.c | 8 | ||||
-rw-r--r-- | plugins/xsettings/gsd-xsettings-manager.c | 18 |
6 files changed, 120 insertions, 99 deletions
diff --git a/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c b/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c index e665d00b..733efd2b 100644 --- a/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c +++ b/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c @@ -1021,8 +1021,10 @@ gsd_a11y_keyboard_manager_stop (GsdA11yKeyboardManager *manager) if (p->status_icon) gtk_status_icon_set_visible (p->status_icon, FALSE); - g_object_unref (p->settings); - p->settings = NULL; + if (p->settings != NULL) { + g_object_unref (p->settings); + p->settings = NULL; + } gdk_window_remove_filter (NULL, (GdkFilterFunc) cb_xkb_event_filter, diff --git a/plugins/gconf/gsd-gconf-manager.c b/plugins/gconf/gsd-gconf-manager.c index ac78e564..f5c87ab8 100644 --- a/plugins/gconf/gsd-gconf-manager.c +++ b/plugins/gconf/gsd-gconf-manager.c @@ -25,7 +25,7 @@ #define GSD_GCONF_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_GCONF_MANAGER, GsdGconfManagerPrivate)) struct GsdGconfManagerPrivate { - GHashTable *conf_watchers; + GHashTable *conf_watchers; }; GsdGconfManager *manager_object = NULL; @@ -35,113 +35,115 @@ G_DEFINE_TYPE(GsdGconfManager, gsd_gconf_manager, G_TYPE_OBJECT) static void gsd_gconf_manager_finalize (GObject *object) { - GsdGconfManager *manager = GSD_GCONF_MANAGER (object); + GsdGconfManager *manager = GSD_GCONF_MANAGER (object); - g_return_if_fail (manager->priv != NULL); + g_return_if_fail (manager->priv != NULL); - if (manager->priv->conf_watchers != NULL) - g_hash_table_destroy (manager->priv->conf_watchers); + if (manager->priv->conf_watchers != NULL) + g_hash_table_destroy (manager->priv->conf_watchers); - G_OBJECT_CLASS (gsd_gconf_manager_parent_class)->finalize (object); + G_OBJECT_CLASS (gsd_gconf_manager_parent_class)->finalize (object); } static void gsd_gconf_manager_class_init (GsdGconfManagerClass *klass) { - GObjectClass *object_class = G_OBJECT_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); - object_class->finalize = gsd_gconf_manager_finalize; + object_class->finalize = gsd_gconf_manager_finalize; - g_type_class_add_private (klass, sizeof (GsdGconfManagerPrivate)); + g_type_class_add_private (klass, sizeof (GsdGconfManagerPrivate)); } static void gsd_gconf_manager_init (GsdGconfManager *manager) { - manager->priv = GSD_GCONF_MANAGER_GET_PRIVATE (manager); + manager->priv = GSD_GCONF_MANAGER_GET_PRIVATE (manager); } GsdGconfManager * gsd_gconf_manager_new (void) { - if (manager_object != NULL) { - g_object_ref (manager_object); - } else { - manager_object = g_object_new (GSD_TYPE_GCONF_MANAGER, NULL); - g_object_add_weak_pointer ((gpointer) manager_object, - (gpointer *) &manager_object); - } - - return manager_object; + if (manager_object != NULL) { + g_object_ref (manager_object); + } else { + manager_object = g_object_new (GSD_TYPE_GCONF_MANAGER, NULL); + g_object_add_weak_pointer ((gpointer) manager_object, + (gpointer *) &manager_object); + } + + return manager_object; } gboolean gsd_gconf_manager_start (GsdGconfManager *manager, GError **error) { - GDir *convertdir; - gboolean result = FALSE; - - manager->priv->conf_watchers = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); - - /* Read all conversion files from GCONF_SETTINGS_CONVERTDIR */ - convertdir = g_dir_open (GCONF_SETTINGS_CONVERTDIR, 0, error); - if (convertdir) { - const gchar *filename; - - while ((filename = g_dir_read_name (convertdir))) { - gchar *path, **groups; - gsize group_len, i; - GKeyFile *key_file = g_key_file_new (); - - path = g_build_filename (GCONF_SETTINGS_CONVERTDIR, filename, NULL); - if (!g_key_file_load_from_file (key_file, path, G_KEY_FILE_NONE, error)) { - g_free (path); - g_key_file_free (key_file); - result = FALSE; - break; - } - - /* Load the groups in the file */ - groups = g_key_file_get_groups (key_file, &group_len); - for (i = 0; i < group_len; i++) { - gchar **keys; - gsize key_len, j; - GHashTable *keys_hash = NULL; - - keys = g_key_file_get_keys (key_file, groups[i], &key_len, error); - for (j = 0; j < key_len; j++) { - if (keys_hash == NULL) - keys_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); - - g_hash_table_insert (keys_hash, g_strdup (keys[j]), - g_strdup (g_key_file_get_value (key_file, groups[i], keys[j], error))); - } - - g_strfreev (keys); - - if (keys_hash != NULL) { - g_hash_table_insert (manager->priv->conf_watchers, - g_strdup (groups[i]), - conf_watcher_new (groups[i], keys_hash)); - } - } - - /* Free all memory */ - g_free (path); - g_strfreev (groups); - - result = TRUE; - } - - g_dir_close (convertdir); - } - - return result; + GDir *convertdir; + gboolean result = FALSE; + + manager->priv->conf_watchers = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); + + /* Read all conversion files from GCONF_SETTINGS_CONVERTDIR */ + convertdir = g_dir_open (GCONF_SETTINGS_CONVERTDIR, 0, error); + if (convertdir) { + const gchar *filename; + + while ((filename = g_dir_read_name (convertdir))) { + gchar *path, **groups; + gsize group_len, i; + GKeyFile *key_file = g_key_file_new (); + + path = g_build_filename (GCONF_SETTINGS_CONVERTDIR, filename, NULL); + if (!g_key_file_load_from_file (key_file, path, G_KEY_FILE_NONE, error)) { + g_free (path); + g_key_file_free (key_file); + result = FALSE; + break; + } + + /* Load the groups in the file */ + groups = g_key_file_get_groups (key_file, &group_len); + for (i = 0; i < group_len; i++) { + gchar **keys; + gsize key_len, j; + GHashTable *keys_hash = NULL; + + keys = g_key_file_get_keys (key_file, groups[i], &key_len, error); + for (j = 0; j < key_len; j++) { + if (keys_hash == NULL) + keys_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); + + g_hash_table_insert (keys_hash, g_strdup (keys[j]), + g_strdup (g_key_file_get_value (key_file, groups[i], keys[j], error))); + } + + g_strfreev (keys); + + if (keys_hash != NULL) { + g_hash_table_insert (manager->priv->conf_watchers, + g_strdup (groups[i]), + conf_watcher_new (groups[i], keys_hash)); + } + } + + /* Free all memory */ + g_free (path); + g_strfreev (groups); + + result = TRUE; + } + + g_dir_close (convertdir); + } + + return result; } void gsd_gconf_manager_stop (GsdGconfManager *manager) { - g_hash_table_destroy (manager->priv->conf_watchers); - manager->priv->conf_watchers = NULL; + if (manager->priv->conf_watchers != NULL) { + g_hash_table_destroy (manager->priv->conf_watchers); + manager->priv->conf_watchers = NULL; + } } diff --git a/plugins/keybindings/gsd-keybindings-manager.c b/plugins/keybindings/gsd-keybindings-manager.c index 5cad7d6e..3d5435e0 100644 --- a/plugins/keybindings/gsd-keybindings-manager.c +++ b/plugins/keybindings/gsd-keybindings-manager.c @@ -630,8 +630,10 @@ gsd_keybindings_manager_stop (GsdKeybindingsManager *manager) binding_unregister_keys (manager); - g_slist_free (p->screens); - p->screens = NULL; + if (p->screens != NULL) { + g_slist_free (p->screens); + p->screens = NULL; + } for (l = p->binding_list; l; l = l->next) { Binding *b = l->data; @@ -642,8 +644,11 @@ gsd_keybindings_manager_stop (GsdKeybindingsManager *manager) g_free (b->key.keycodes); g_free (b); } - g_slist_free (p->binding_list); - p->binding_list = NULL; + + if (p->binding_list != NULL) { + g_slist_free (p->binding_list); + p->binding_list = NULL; + } } static void diff --git a/plugins/mouse/gsd-mouse-manager.c b/plugins/mouse/gsd-mouse-manager.c index 685b7035..4ee0bd1e 100644 --- a/plugins/mouse/gsd-mouse-manager.c +++ b/plugins/mouse/gsd-mouse-manager.c @@ -1030,11 +1030,15 @@ gsd_mouse_manager_stop (GsdMouseManager *manager) p->device_manager = NULL; } - g_object_unref (p->mouse_settings); - p->mouse_settings = NULL; + if (p->mouse_settings != NULL) { + g_object_unref (p->mouse_settings); + p->mouse_settings = NULL; + } - g_object_unref (p->touchpad_settings); - p->touchpad_settings = NULL; + if (p->touchpad_settings != NULL) { + g_object_unref (p->touchpad_settings); + p->touchpad_settings = NULL; + } set_locate_pointer (manager, FALSE); } diff --git a/plugins/sound/gsd-sound-manager.c b/plugins/sound/gsd-sound-manager.c index 221418cc..85ebade6 100644 --- a/plugins/sound/gsd-sound-manager.c +++ b/plugins/sound/gsd-sound-manager.c @@ -316,10 +316,10 @@ gsd_sound_manager_stop (GsdSoundManager *manager) g_debug ("Stopping sound manager"); #ifdef HAVE_PULSE - if (manager->priv->settings != NULL) { - g_object_unref (manager->priv->settings); - manager->priv->settings = NULL; - } + if (manager->priv->settings != NULL) { + g_object_unref (manager->priv->settings); + manager->priv->settings = NULL; + } if (manager->priv->timeout) { g_source_remove (manager->priv->timeout); diff --git a/plugins/xsettings/gsd-xsettings-manager.c b/plugins/xsettings/gsd-xsettings-manager.c index ccc9bfd2..91c09f82 100644 --- a/plugins/xsettings/gsd-xsettings-manager.c +++ b/plugins/xsettings/gsd-xsettings-manager.c @@ -751,14 +751,22 @@ gnome_xsettings_manager_stop (GnomeXSettingsManager *manager) p->managers = NULL; } - g_object_unref (manager->priv->plugin_settings); + if (p->plugin_settings != NULL) { + g_object_unref (p->plugin_settings); + p->plugin_settings = NULL; + } + stop_fontconfig_monitor (manager); - g_hash_table_destroy (p->settings); - p->settings = NULL; + if (p->settings != NULL) { + g_hash_table_destroy (p->settings); + p->settings = NULL; + } - g_object_unref (p->gtk); - p->gtk = NULL; + if (p->gtk != NULL) { + g_object_unref (p->gtk); + p->gtk = NULL; + } } static void |