[gnome-settings-daemon] various: Don't unref null objects in _stop()
- From: William Jon McCann <mccann src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] various: Don't unref null objects in _stop()
- Date: Tue, 23 Nov 2010 04:11:10 +0000 (UTC)
commit b9c73d7e1d5a9c9dc350dcd751e54e757c7a1dcf
Author: William Jon McCann <jmccann redhat com>
Date: Mon Nov 22 22:43:23 2010 -0500
various: Don't unref null objects in _stop()
WTF people let's try not to be so sloppy.
plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c | 6 +-
plugins/gconf/gsd-gconf-manager.c | 162 +++++++++++----------
plugins/keybindings/gsd-keybindings-manager.c | 13 +-
plugins/mouse/gsd-mouse-manager.c | 12 +-
plugins/sound/gsd-sound-manager.c | 8 +-
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 e665d00..733efd2 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 ac78e56..f5c87ab 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 5cad7d6..3d5435e 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 685b703..4ee0bd1 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 221418c..85ebade 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 ccc9bfd..91c09f8 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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]