]> git.0d.be Git - empathy.git/commitdiff
Call ClearAvatar if the data is NULL or size <= 0 in
authorXavier Claessens <xclaesse@gmail.com>
Sat, 3 Nov 2007 23:47:03 +0000 (23:47 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Sat, 3 Nov 2007 23:47:03 +0000 (23:47 +0000)
2007-11-03  Xavier Claessens  <xclaesse@gmail.com>

* libempathy/empathy-contact-factory.c: Call ClearAvatar if the data
is NULL or size <= 0 in empathy_contact_factory_set_avatar().

svn path=/trunk/; revision=418

ChangeLog
libempathy/empathy-contact-factory.c

index 6266c349ad58b485061919ecae2432abff528667..51f30d73e3900dac07dabcb910fb318078a83ce3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-11-03  Xavier Claessens  <xclaesse@gmail.com>
+
+       * libempathy/empathy-contact-factory.c: Call ClearAvatar if the data
+       is NULL or size <= 0 in empathy_contact_factory_set_avatar().
+
 2007-11-03  Xavier Claessens  <xclaesse@gmail.com>
 
        * libempathy-gtk/empathy-contact-widget.c:
 2007-11-03  Xavier Claessens  <xclaesse@gmail.com>
 
        * libempathy-gtk/empathy-contact-widget.c:
index 2aaa8fad3b60b1136e35e16fccd6c5ae787c7738..7d6e6f6637757670947ce2cfc70932417b0c5ba7 100644 (file)
@@ -398,6 +398,21 @@ contact_factory_set_avatar_cb (DBusGProxy *proxy,
        g_free (token);
 }
 
        g_free (token);
 }
 
+static void
+contact_factory_clear_avatar_cb (DBusGProxy *proxy,
+                                GError     *error,
+                                gpointer    user_data)
+{
+       ContactFactoryAccountData *account_data = user_data;
+
+       if (error) {
+               empathy_debug (DEBUG_DOMAIN, "Error clearing avatar: %s",
+                              error->message);
+       }
+
+       contact_factory_account_data_unref (account_data);
+}
+
 static void
 contact_factory_avatar_retrieved_cb (DBusGProxy *proxy,
                                     guint       handle,
 static void
 contact_factory_avatar_retrieved_cb (DBusGProxy *proxy,
                                     guint       handle,
@@ -1256,7 +1271,6 @@ empathy_contact_factory_set_avatar (EmpathyContactFactory *factory,
                                    const gchar           *mime_type)
 {
        ContactFactoryAccountData *account_data;
                                    const gchar           *mime_type)
 {
        ContactFactoryAccountData *account_data;
-       GArray                     avatar;
 
        g_return_if_fail (EMPATHY_IS_CONTACT_FACTORY (factory));
        g_return_if_fail (MC_IS_ACCOUNT (account));
 
        g_return_if_fail (EMPATHY_IS_CONTACT_FACTORY (factory));
        g_return_if_fail (MC_IS_ACCOUNT (account));
@@ -1270,13 +1284,21 @@ empathy_contact_factory_set_avatar (EmpathyContactFactory *factory,
        empathy_debug (DEBUG_DOMAIN, "Setting avatar on account %s",
                       mc_account_get_unique_name (account));
 
        empathy_debug (DEBUG_DOMAIN, "Setting avatar on account %s",
                       mc_account_get_unique_name (account));
 
-       avatar.data = (gchar*) data;
-       avatar.len = size;
-       tp_conn_iface_avatars_set_avatar_async (account_data->avatars_iface,
-                                               &avatar,
-                                               mime_type,
-                                               contact_factory_set_avatar_cb,
-                                               contact_factory_account_data_ref (account_data));
+       if (data && size > 0 && size < G_MAXUINT) {
+               GArray avatar;
+
+               avatar.data = (gchar*) data;
+               avatar.len = size;
+               tp_conn_iface_avatars_set_avatar_async (account_data->avatars_iface,
+                                                       &avatar,
+                                                       mime_type,
+                                                       contact_factory_set_avatar_cb,
+                                                       contact_factory_account_data_ref (account_data));
+       } else {
+               tp_conn_iface_avatars_clear_avatar_async (account_data->avatars_iface,
+                                                         contact_factory_clear_avatar_cb,
+                                                         contact_factory_account_data_ref (account_data));
+       }
 }
 
 static void
 }
 
 static void