[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