From fefe898e2ccbca4a0aa75d849073faef5d37bb65 Mon Sep 17 00:00:00 2001 From: Jonny Lamb Date: Tue, 25 Aug 2009 11:40:16 +0100 Subject: Wait for the connection to be ready before requesting contacts from it. Signed-off-by: Jonny Lamb --- libempathy/empathy-dispatch-operation.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'libempathy/empathy-dispatch-operation.c') diff --git a/libempathy/empathy-dispatch-operation.c b/libempathy/empathy-dispatch-operation.c index 79fe8c62d..d7afcbea6 100644 --- a/libempathy/empathy-dispatch-operation.c +++ b/libempathy/empathy-dispatch-operation.c @@ -200,6 +200,26 @@ dispatcher_operation_got_contact_cb (EmpathyTpContactFactory *factory, empathy_dispatch_operation_channel_ready_cb, self); } +static void +dispatch_operation_connection_ready (TpConnection *connection, + const GError *error, + gpointer user_data) +{ + EmpathyDispatchOperation *self = EMPATHY_DISPATCH_OPERATION (user_data); + EmpathyDispatchOperationPriv *priv = GET_PRIV (self); + EmpathyTpContactFactory *factory; + TpHandle handle; + + handle = tp_channel_get_handle (priv->channel, NULL); + + factory = empathy_tp_contact_factory_dup_singleton (priv->connection); + + empathy_tp_contact_factory_get_from_handle (factory, handle, + dispatcher_operation_got_contact_cb, NULL, NULL, G_OBJECT (self)); + + g_object_unref (factory); +} + static void empathy_dispatch_operation_constructed (GObject *object) { @@ -219,12 +239,8 @@ empathy_dispatch_operation_constructed (GObject *object) if (handle_type == TP_HANDLE_TYPE_CONTACT && priv->contact == NULL) { - EmpathyTpContactFactory *factory; - - factory = empathy_tp_contact_factory_dup_singleton (priv->connection); - empathy_tp_contact_factory_get_from_handle (factory, handle, - dispatcher_operation_got_contact_cb, NULL, NULL, object); - g_object_unref (factory); + tp_connection_call_when_ready (priv->connection, + dispatch_operation_connection_ready, object); return; } -- cgit v1.2.3