empathy r798 - trunk/libempathy



Author: xclaesse
Date: Sun Mar 16 12:48:24 2008
New Revision: 798
URL: http://svn.gnome.org/viewvc/empathy?rev=798&view=rev

Log:
Retry requesting aliases if it fails, it can happen if there is too many aliases to request and it takes too much time


Modified:
   trunk/libempathy/empathy-contact.c
   trunk/libempathy/empathy-tp-contact-factory.c

Modified: trunk/libempathy/empathy-contact.c
==============================================================================
--- trunk/libempathy/empathy-contact.c	(original)
+++ trunk/libempathy/empathy-contact.c	Sun Mar 16 12:48:24 2008
@@ -423,7 +423,7 @@
 	g_free (priv->name);
 	priv->name = g_strdup (name);
 	contact_set_ready_flag (contact, EMPATHY_CONTACT_READY_NAME,
-				!G_STR_EMPTY (name));
+				name != NULL);
 
 	g_object_notify (G_OBJECT (contact), "name");
 }

Modified: trunk/libempathy/empathy-tp-contact-factory.c
==============================================================================
--- trunk/libempathy/empathy-tp-contact-factory.c	(original)
+++ trunk/libempathy/empathy-tp-contact-factory.c	Sun Mar 16 12:48:24 2008
@@ -215,13 +215,35 @@
 				       gpointer       user_data,
 				       GObject       *tp_factory)
 {
-	guint        *handles = user_data;
-	guint         i = 0;
-	const gchar **name;
+	EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory);
+	guint                       *handles = user_data;
+	guint                        i = 0;
+	const gchar                **name;
 
 	if (error) {
+		GArray handles_array;
+		guint  size = 0;
+
 		empathy_debug (DEBUG_DOMAIN, "Error requesting aliases: %s",
 			      error->message);
+
+		/* FIXME: Sometimes the dbus call timesout because CM takes
+		 * too much time to request all aliases from the server,
+		 * that's why we retry. */
+		while (handles[size] != 0) {
+			size++;
+		}
+		handles = g_memdup (handles, size * sizeof (guint));
+		handles_array.len = size;
+		handles_array.data = (gchar*) handles;
+		
+		tp_cli_connection_interface_aliasing_call_request_aliases (priv->connection,
+									   -1,
+									   &handles_array,
+									   tp_contact_factory_request_aliases_cb,
+									   handles, g_free,
+									   G_OBJECT (tp_factory));
+
 		return;
 	}
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]