empathy r893 - trunk/libempathy



Author: xclaesse
Date: Fri Apr 11 14:10:34 2008
New Revision: 893
URL: http://svn.gnome.org/viewvc/empathy?rev=893&view=rev

Log:
Make use of empathy_run_until_ready_full


Modified:
   trunk/libempathy/empathy-contact.c

Modified: trunk/libempathy/empathy-contact.c
==============================================================================
--- trunk/libempathy/empathy-contact.c	(original)
+++ trunk/libempathy/empathy-contact.c	Fri Apr 11 14:10:34 2008
@@ -752,23 +752,16 @@
 	return priv->hash;
 }
 
-typedef struct {
-	EmpathyContactReady  ready;
-	GMainLoop           *loop;
-} RunUntilReadyData;
-
-static void
-contact_ready_notify_cb (EmpathyContact    *contact,
-			 GParamSpec        *param,
-			 RunUntilReadyData *data)
+static gboolean
+contact_is_ready_func (GObject  *contact,
+		       gpointer  user_data)
 {
 	EmpathyContactPriv *priv = GET_PRIV (contact);
+	EmpathyContactReady ready;
+
+	ready = GPOINTER_TO_UINT (user_data);
 
-	if ((priv->ready & data->ready) == data->ready) {
-		empathy_debug (DEBUG_DOMAIN, "contact %s (%d) ready %d",
-			       priv->id, priv->handle, priv->ready);
-		g_main_loop_quit (data->loop);
-	}
+	return (priv->ready & ready) == ready;
 }
 
 void
@@ -776,36 +769,8 @@
 				 EmpathyContactReady  ready,
 				 GMainLoop          **loop)
 {
-	EmpathyContactPriv *priv = GET_PRIV (contact);
-	RunUntilReadyData   data;
-	gulong              signal_id;
-
-	g_return_if_fail (EMPATHY_IS_CONTACT (contact));
-
-	if ((priv->ready & ready) == ready) {
-		return;
-	}
-
-	empathy_debug (DEBUG_DOMAIN, "Run until ready=%d for contact %s (%d)",
-		       ready, priv->id, priv->handle);
-
-	data.ready = ready;
-	data.loop = g_main_loop_new (NULL, FALSE);
-
-	signal_id = g_signal_connect (contact, "notify::ready",
-				      G_CALLBACK (contact_ready_notify_cb),
-				      &data);
-	if (loop != NULL) {
-		*loop = data.loop;
-	}
-
-	g_main_loop_run (data.loop);
-
-	if (loop != NULL) {
-		*loop = NULL;
-	}
-
-	g_signal_handler_disconnect (contact, signal_id);
-	g_main_loop_unref (data.loop);
+	empathy_run_until_ready_full (contact, "notify::ready",
+				      contact_is_ready_func, GUINT_TO_POINTER (ready),
+				      loop);
 }
 



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