From d6b43c2ff67d2d90bf577990fb67917a01e38807 Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Mon, 29 Nov 2010 16:03:07 +0100 Subject: notify-manager: cache the notification GSettings --- libempathy-gtk/empathy-notify-manager.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) (limited to 'libempathy-gtk') diff --git a/libempathy-gtk/empathy-notify-manager.c b/libempathy-gtk/empathy-notify-manager.c index 803839755..7a4374c48 100644 --- a/libempathy-gtk/empathy-notify-manager.c +++ b/libempathy-gtk/empathy-notify-manager.c @@ -42,6 +42,7 @@ typedef struct /* owned (gchar *) => TRUE */ GHashTable *capabilities; TpAccountManager *account_manager; + GSettings *gsettings_notif; } EmpathyNotifyManagerPriv; G_DEFINE_TYPE (EmpathyNotifyManager, empathy_notify_manager, G_TYPE_OBJECT); @@ -78,6 +79,8 @@ notify_manager_dispose (GObject *object) priv->account_manager = NULL; } + tp_clear_object (&priv->gsettings_notif); + G_OBJECT_CLASS (empathy_notify_manager_parent_class)->dispose (object); } @@ -128,6 +131,8 @@ empathy_notify_manager_init (EmpathyNotifyManager *self) self->priv = priv; + priv->gsettings_notif = g_settings_new (EMPATHY_PREFS_NOTIFICATIONS_SCHEMA); + priv->capabilities = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); @@ -184,20 +189,17 @@ gboolean empathy_notify_manager_notification_is_enabled (EmpathyNotifyManager *self) { EmpathyNotifyManagerPriv *priv = GET_PRIV (self); - GSettings *gsettings = g_settings_new (EMPATHY_PREFS_NOTIFICATIONS_SCHEMA); TpConnectionPresenceType presence; - gboolean ret = FALSE; - if (!g_settings_get_boolean (gsettings, EMPATHY_PREFS_NOTIFICATIONS_ENABLED)) - goto finally; + if (!g_settings_get_boolean (priv->gsettings_notif, + EMPATHY_PREFS_NOTIFICATIONS_ENABLED)) + return FALSE; if (!tp_account_manager_is_prepared (priv->account_manager, TP_ACCOUNT_MANAGER_FEATURE_CORE)) { DEBUG ("account manager is not ready yet; display the notification"); - ret = TRUE; - - goto finally; + return TRUE; } presence = tp_account_manager_get_most_available_presence ( @@ -207,15 +209,10 @@ empathy_notify_manager_notification_is_enabled (EmpathyNotifyManager *self) if (presence != TP_CONNECTION_PRESENCE_TYPE_AVAILABLE && presence != TP_CONNECTION_PRESENCE_TYPE_UNSET) { - if (g_settings_get_boolean (gsettings, + if (g_settings_get_boolean (priv->gsettings_notif, EMPATHY_PREFS_NOTIFICATIONS_DISABLED_AWAY)) - goto finally; + return FALSE; } - ret = TRUE; - -finally: - g_object_unref (gsettings); - - return ret; + return TRUE; } -- cgit v1.2.3