[telepathy-mission-control/master] McdAccount, McdConnection: move responsibility for calling InspectHandles from C. to A.

Simon McVittie simon.mcvittie at collabora.co.uk
Mon Jun 1 10:45:20 PDT 2009


There's no real gain to having this functionality in the McdConnection,
and it's yet another case where McdConnection inappropriately calls
McdAccount methods.
---
 src/mcd-account.c    |   38 ++++++++++++++++++++++++++++++++++++++
 src/mcd-connection.c |   40 ----------------------------------------
 2 files changed, 38 insertions(+), 40 deletions(-)

diff --git a/src/mcd-account.c b/src/mcd-account.c
index 13e6c73..375a0a6 100644
--- a/src/mcd-account.c
+++ b/src/mcd-account.c
@@ -2618,15 +2618,53 @@ _mcd_account_load (McdAccount *account, McdAccountLoadCb callback,
 }
 
 static void
+mcd_account_self_handle_inspected_cb (TpConnection *connection,
+                                      const gchar **names,
+                                      const GError *error,
+                                      gpointer user_data,
+                                      GObject *weak_object)
+{
+    McdAccount *self = MCD_ACCOUNT (weak_object);
+
+    if (error)
+    {
+        g_warning ("%s: InspectHandles failed: %s", G_STRFUNC, error->message);
+        return;
+    }
+
+    if (names != NULL && names[0] != NULL)
+    {
+        _mcd_account_set_normalized_name (self, names[0]);
+    }
+}
+
+static void
 mcd_account_connection_ready_cb (McdAccount *account,
                                  McdConnection *connection)
 {
     McdAccountPrivate *priv = account->priv;
     gchar *nickname;
+    TpConnection *tp_connection;
+    GArray *self_handle_array;
+    guint self_handle;
 
     g_return_if_fail (MCD_IS_ACCOUNT (account));
     g_return_if_fail (connection == priv->connection);
 
+    tp_connection = mcd_connection_get_tp_connection (connection);
+    g_return_if_fail (tp_connection != NULL);
+
+    self_handle_array = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1);
+    self_handle = tp_connection_get_self_handle (tp_connection);
+    g_array_append_val (self_handle_array, self_handle);
+    tp_cli_connection_call_inspect_handles (tp_connection, -1,
+                                            TP_HANDLE_TYPE_CONTACT,
+                                            self_handle_array,
+                                            mcd_account_self_handle_inspected_cb,
+                                            NULL, NULL,
+                                            (GObject *) account);
+    g_array_free (self_handle_array, TRUE);
+
     /* FIXME: ideally, on protocols with server-stored nicknames, this should
      * only be done if the local Nickname has been changed since last time we
      * were online; Aliasing doesn't currently offer a way to tell whether
diff --git a/src/mcd-connection.c b/src/mcd-connection.c
index e4cf466..682680a 100644
--- a/src/mcd-connection.c
+++ b/src/mcd-connection.c
@@ -577,44 +577,6 @@ _mcd_connection_setup_contact_capabilities (McdConnection *connection)
 }
 
 static void
-inspect_handles_cb (TpConnection *proxy, const gchar **names,
-		    const GError *error, gpointer user_data,
-		    GObject *weak_object)
-{
-    McdConnectionPrivate *priv = user_data;
-
-    if (error)
-    {
-	g_warning ("%s: InspectHandles failed: %s", G_STRFUNC, error->message);
-	return;
-    }
-    if (names && names[0] != NULL)
-    {
-        _mcd_account_set_normalized_name (priv->account, names[0]);
-    }
-}
-
-static void
-_mcd_connection_get_normalized_name (McdConnection *connection)
-{
-    McdConnectionPrivate *priv = connection->priv;
-    GArray *handles;
-    TpHandle self_handle;
-
-    g_return_if_fail (priv->tp_conn != NULL);
-
-    handles = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1);
-    self_handle = tp_connection_get_self_handle (priv->tp_conn);
-    g_array_append_val (handles, self_handle);
-    tp_cli_connection_call_inspect_handles (priv->tp_conn, -1,
-					    TP_HANDLE_TYPE_CONTACT,
-					    handles,
-					    inspect_handles_cb, priv, NULL,
-					    (GObject *)connection);
-    g_array_free (handles, TRUE); 
-}
-
-static void
 avatars_set_avatar_cb (TpConnection *proxy, const gchar *token,
 		       const GError *error, gpointer user_data,
 		       GObject *weak_object)
@@ -1377,8 +1339,6 @@ on_connection_ready (TpConnection *tp_conn, const GError *error,
     DEBUG ("connection is ready");
     priv = MCD_CONNECTION_PRIV (connection);
 
-    _mcd_connection_get_normalized_name (connection);
-
     priv->has_presence_if = tp_proxy_has_interface_by_id
         (tp_conn, TP_IFACE_QUARK_CONNECTION_INTERFACE_SIMPLE_PRESENCE);
     priv->has_avatars_if = tp_proxy_has_interface_by_id (tp_conn,
-- 
1.5.6.5




More information about the telepathy-commits mailing list