[empathy] event-manager: cache the notifications GSettings



commit 6408432db9e2b1240c1cfea461d330ac0a01e49a
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Mon Nov 29 16:26:27 2010 +0100

    event-manager: cache the notifications GSettings

 src/empathy-event-manager.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)
---
diff --git a/src/empathy-event-manager.c b/src/empathy-event-manager.c
index 91bd474..11f95f5 100644
--- a/src/empathy-event-manager.c
+++ b/src/empathy-event-manager.c
@@ -82,6 +82,8 @@ typedef struct {
   GSList *approvals;
 
   gint ringing;
+
+  GSettings *gsettings_notif;
 } EmpathyEventManagerPriv;
 
 typedef struct _EventPriv EventPriv;
@@ -1032,10 +1034,10 @@ event_manager_presence_changed_cb (EmpathyContact *contact,
     TpConnectionPresenceType previous,
     EmpathyEventManager *manager)
 {
+  EmpathyEventManagerPriv *priv = GET_PRIV (manager);
   TpAccount *account;
   gchar *header = NULL;
   EmpathyIdle *idle;
-  GSettings *gsettings = g_settings_new (EMPATHY_PREFS_NOTIFICATIONS_SCHEMA);
   GtkWidget *window = empathy_main_window_dup ();
 
   account = empathy_contact_get_account (contact);
@@ -1054,7 +1056,7 @@ event_manager_presence_changed_cb (EmpathyContact *contact,
           /* someone is logging off */
           empathy_sound_play (window, EMPATHY_SOUND_CONTACT_DISCONNECTED);
 
-          if (g_settings_get_boolean (gsettings,
+          if (g_settings_get_boolean (priv->gsettings_notif,
                 EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNOUT))
             {
               header = g_strdup_printf (_("%s is now offline."),
@@ -1074,7 +1076,7 @@ event_manager_presence_changed_cb (EmpathyContact *contact,
           /* someone is logging in */
           empathy_sound_play (window, EMPATHY_SOUND_CONTACT_CONNECTED);
 
-          if (g_settings_get_boolean (gsettings,
+          if (g_settings_get_boolean (priv->gsettings_notif,
                 EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNIN))
             {
               header = g_strdup_printf (_("%s is now online."),
@@ -1089,7 +1091,6 @@ event_manager_presence_changed_cb (EmpathyContact *contact,
 
 out:
   g_object_unref (idle);
-  g_object_unref (gsettings);
   g_object_unref (window);
 }
 
@@ -1144,6 +1145,7 @@ event_manager_finalize (GObject *object)
   g_slist_free (priv->approvals);
   g_object_unref (priv->contact_manager);
   g_object_unref (priv->approver);
+  g_object_unref (priv->gsettings_notif);
 }
 
 static void
@@ -1196,6 +1198,8 @@ empathy_event_manager_init (EmpathyEventManager *manager)
 
   manager->priv = priv;
 
+  priv->gsettings_notif = g_settings_new (EMPATHY_PREFS_NOTIFICATIONS_SCHEMA);
+
   priv->contact_manager = empathy_contact_manager_dup_singleton ();
   g_signal_connect (priv->contact_manager, "pendings-changed",
     G_CALLBACK (event_manager_pendings_changed_cb), manager);



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