aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2009-01-07 00:49:56 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2009-01-07 00:49:56 +0800
commite5011edd94a51339ae21e2690fd90af652425549 (patch)
treeac9e614d11948b1fb0e38146fc6e875c5315bb2d /libempathy
parentd928abd933a716c44a6db244ea87dac566be2a5b (diff)
downloadgsoc2013-empathy-e5011edd94a51339ae21e2690fd90af652425549.tar
gsoc2013-empathy-e5011edd94a51339ae21e2690fd90af652425549.tar.gz
gsoc2013-empathy-e5011edd94a51339ae21e2690fd90af652425549.tar.bz2
gsoc2013-empathy-e5011edd94a51339ae21e2690fd90af652425549.tar.lz
gsoc2013-empathy-e5011edd94a51339ae21e2690fd90af652425549.tar.xz
gsoc2013-empathy-e5011edd94a51339ae21e2690fd90af652425549.tar.zst
gsoc2013-empathy-e5011edd94a51339ae21e2690fd90af652425549.zip
Create the EmpathyContactMonitor lazily if needed.
svn path=/trunk/; revision=2099
Diffstat (limited to 'libempathy')
-rw-r--r--libempathy/empathy-contact-manager.c10
-rw-r--r--libempathy/empathy-tp-chat.c11
2 files changed, 17 insertions, 4 deletions
diff --git a/libempathy/empathy-contact-manager.c b/libempathy/empathy-contact-manager.c
index 213c625a3..a69d6d970 100644
--- a/libempathy/empathy-contact-manager.c
+++ b/libempathy/empathy-contact-manager.c
@@ -191,7 +191,9 @@ contact_manager_finalize (GObject *object)
object);
g_object_unref (priv->account_manager);
- g_object_unref (priv->contact_monitor);
+ if (priv->contact_monitor) {
+ g_object_unref (priv->contact_monitor);
+ }
}
static void
@@ -218,7 +220,7 @@ empathy_contact_manager_init (EmpathyContactManager *manager)
(GDestroyNotify) g_object_unref,
(GDestroyNotify) g_object_unref);
priv->account_manager = empathy_account_manager_dup_singleton ();
- priv->contact_monitor = empathy_contact_monitor_new_for_proxy (EMPATHY_CONTACT_LIST (manager));
+ priv->contact_monitor = NULL;
g_signal_connect (priv->account_manager,
"account-connection-changed",
@@ -333,6 +335,10 @@ contact_manager_get_monitor (EmpathyContactList *manager)
{
EmpathyContactManagerPriv *priv = GET_PRIV (manager);
+ if (priv->contact_monitor == NULL) {
+ priv->contact_monitor = empathy_contact_monitor_new_for_iface (manager);
+ }
+
return priv->contact_monitor;
}
diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c
index bda30edb4..8517c1c0d 100644
--- a/libempathy/empathy-tp-chat.c
+++ b/libempathy/empathy-tp-chat.c
@@ -259,6 +259,10 @@ tp_chat_get_monitor (EmpathyContactList *list)
priv = GET_PRIV (list);
+ if (priv->contact_monitor == NULL) {
+ priv->contact_monitor = empathy_contact_monitor_new_for_iface (list);
+ }
+
return priv->contact_monitor;
}
@@ -908,7 +912,10 @@ tp_chat_finalize (GObject *object)
g_object_unref (priv->group);
}
- g_object_unref (priv->contact_monitor);
+ if (priv->contact_monitor) {
+ g_object_unref (priv->contact_monitor);
+ }
+
g_object_unref (priv->factory);
g_object_unref (priv->user);
g_object_unref (priv->account);
@@ -1112,7 +1119,7 @@ empathy_tp_chat_init (EmpathyTpChat *chat)
EMPATHY_TYPE_TP_CHAT, EmpathyTpChatPriv);
chat->priv = priv;
- priv->contact_monitor = empathy_contact_monitor_new_for_proxy (EMPATHY_CONTACT_LIST (chat));
+ priv->contact_monitor = NULL;
}
static void