- 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);