[Telepathy-commits] [telepathy-mission-control/master] Fix avatar change notifications
Alberto Mardegan
alberto.mardegan at nokia.com
Thu Feb 19 05:51:17 PST 2009
The remote avatar was not retrieved correctly.
---
src/mcd-account.c | 27 ++++++++++++++++++---------
src/mcd-connection.c | 14 +++++++-------
2 files changed, 25 insertions(+), 16 deletions(-)
diff --git a/src/mcd-account.c b/src/mcd-account.c
index 8e078ba..c7177f6 100644
--- a/src/mcd-account.c
+++ b/src/mcd-account.c
@@ -2049,19 +2049,28 @@ mcd_account_set_avatar (McdAccount *account, const GArray *avatar,
}
g_free (filename);
- if (token)
- g_key_file_set_string (priv->keyfile, priv->unique_name,
- MC_ACCOUNTS_KEY_AVATAR_TOKEN, token);
- else
- g_key_file_remove_key (priv->keyfile, priv->unique_name,
- MC_ACCOUNTS_KEY_AVATAR_TOKEN, NULL);
-
if (mime_type)
g_key_file_set_string (priv->keyfile, priv->unique_name,
MC_ACCOUNTS_KEY_AVATAR_MIME, mime_type);
- g_signal_emit (account, _mcd_account_signals[AVATAR_CHANGED], 0,
- avatar, mime_type);
+ if (token)
+ {
+ gchar *prev_token;
+
+ prev_token = mcd_account_get_avatar_token (account);
+ g_key_file_set_string (priv->keyfile, priv->unique_name,
+ MC_ACCOUNTS_KEY_AVATAR_TOKEN, token);
+ if (!prev_token || strcmp (prev_token, token) != 0)
+ mc_svc_account_interface_avatar_emit_avatar_changed (account);
+ g_free (prev_token);
+ }
+ else
+ {
+ g_key_file_remove_key (priv->keyfile, priv->unique_name,
+ MC_ACCOUNTS_KEY_AVATAR_TOKEN, NULL);
+ g_signal_emit (account, _mcd_account_signals[AVATAR_CHANGED], 0,
+ avatar, mime_type);
+ }
mcd_account_manager_write_conf (priv->account_manager);
return TRUE;
diff --git a/src/mcd-connection.c b/src/mcd-connection.c
index c21e102..17dafac 100644
--- a/src/mcd-connection.c
+++ b/src/mcd-connection.c
@@ -814,8 +814,7 @@ on_avatar_updated (TpConnection *proxy, guint contact_id, const gchar *token,
if (priv->setting_avatar) return;
g_debug ("%s: contact %d, token: %s", G_STRFUNC, contact_id, token);
- if (!(prev_token = mcd_account_get_avatar_token (priv->account)))
- return;
+ prev_token = mcd_account_get_avatar_token (priv->account);
if (!prev_token || strcmp (token, prev_token) != 0)
{
@@ -881,11 +880,12 @@ avatars_request_tokens_cb (TpConnection *proxy, GHashTable *tokens,
return;
mcd_account_get_avatar (priv->account, &avatar, &mime_type);
-
- g_debug ("No avatar set, setting our own");
- _mcd_connection_set_avatar (connection, avatar, mime_type);
-
- g_array_free (avatar, TRUE);
+ if (avatar)
+ {
+ g_debug ("No avatar set, setting our own");
+ _mcd_connection_set_avatar (connection, avatar, mime_type);
+ g_array_free (avatar, TRUE);
+ }
g_free (mime_type);
}
--
1.5.6.5
More information about the telepathy-commits
mailing list