telepathy-mission-control: McdAccount: store the self-contact

Simon McVittie smcv at kemper.freedesktop.org
Tue Oct 9 09:11:18 PDT 2012


Module: telepathy-mission-control
Branch: master
Commit: 8a27f3df35f58e48547a9d92711df16214edd5a4
URL:    http://cgit.freedesktop.org/telepathy/telepathy-mission-control/commit/?id=8a27f3df35f58e48547a9d92711df16214edd5a4

Author: Simon McVittie <simon.mcvittie at collabora.co.uk>
Date:   Fri Oct  5 14:38:26 2012 +0100

McdAccount: store the self-contact

---

 src/mcd-account.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/mcd-account.c b/src/mcd-account.c
index 3858b3f..8cf77b8 100644
--- a/src/mcd-account.c
+++ b/src/mcd-account.c
@@ -122,6 +122,7 @@ struct _McdAccountPrivate
     gchar *protocol_name;
 
     TpConnection *tp_connection;
+    TpContact *self_contact;
     McdConnection *connection;
     McdManager *manager;
 
@@ -3256,6 +3257,7 @@ _mcd_account_dispose (GObject *object)
     tp_clear_object (&priv->storage_plugin);
     tp_clear_object (&priv->storage);
     tp_clear_object (&priv->dbus_daemon);
+    tp_clear_object (&priv->self_contact);
 
     _mcd_account_set_connection_context (self, NULL);
     _mcd_account_set_connection (self, NULL);
@@ -4172,6 +4174,7 @@ _mcd_account_set_connection_status (McdAccount *account,
         || (tp_conn != NULL && status == TP_CONNECTION_STATUS_DISCONNECTED))
     {
         tp_clear_object (&priv->tp_connection);
+        tp_clear_object (&priv->self_contact);
 
         if (tp_conn != NULL && status != TP_CONNECTION_STATUS_DISCONNECTED)
             priv->tp_connection = g_object_ref (tp_conn);
@@ -4459,7 +4462,6 @@ mcd_account_connection_ready_cb (McdAccount *account,
     McdAccountPrivate *priv = account->priv;
     gchar *nickname;
     TpConnection *tp_connection;
-    TpContact *self_contact;
     TpConnectionStatus status;
     TpConnectionStatusReason reason;
     const gchar *dbus_error = NULL;
@@ -4474,16 +4476,17 @@ mcd_account_connection_ready_cb (McdAccount *account,
                       tp_connection == priv->tp_connection);
     g_assert (tp_proxy_is_prepared (tp_connection,
                                     TP_CONNECTION_FEATURE_CONNECTED));
+    priv->self_contact = tp_connection_get_self_contact (priv->tp_connection);
+    g_assert (priv->self_contact != NULL);
+    g_object_ref (priv->self_contact);
 
     status = tp_connection_get_status (tp_connection, &reason);
     dbus_error = tp_connection_get_detailed_error (tp_connection, &details);
     _mcd_account_set_connection_status (account, status, reason,
                                         tp_connection, dbus_error, details);
 
-    self_contact = tp_connection_get_self_contact (tp_connection);
-    g_assert (self_contact != NULL);
     _mcd_account_set_normalized_name (account, tp_contact_get_identifier (
-            self_contact));
+            priv->self_contact));
 
     /* FIXME: ideally, on protocols with server-stored nicknames, this should
      * only be done if the local Nickname has been changed since last time we



More information about the telepathy-commits mailing list