[empathy] Port EmpathyTpCall to new API
- From: Xavier Claessens <xclaesse src gnome org>
- To: svn-commits-list gnome org
- Subject: [empathy] Port EmpathyTpCall to new API
- Date: Wed, 22 Apr 2009 06:22:40 -0400 (EDT)
commit 0dc53f30dabfec9b7c60ea5c107a05af4837b6ca
Author: Xavier Claessens <xclaesse gmail com>
Date: Mon Feb 16 00:28:29 2009 +0100
Port EmpathyTpCall to new API
---
libempathy/empathy-tp-call.c | 59 ++++++++++++++++-------------------------
1 files changed, 23 insertions(+), 36 deletions(-)
diff --git a/libempathy/empathy-tp-call.c b/libempathy/empathy-tp-call.c
index 42bf7a0..2cad31c 100644
--- a/libempathy/empathy-tp-call.c
+++ b/libempathy/empathy-tp-call.c
@@ -27,7 +27,7 @@
#include <telepathy-glib/interfaces.h>
#include "empathy-tp-call.h"
-#include "empathy-contact-factory.h"
+#include "empathy-tp-contact-factory.h"
#include "empathy-utils.h"
#define DEBUG_FLAG EMPATHY_DEBUG_TP
@@ -253,22 +253,20 @@ tp_call_request_streams_for_capabilities (EmpathyTpCall *call,
g_array_free (stream_types, TRUE);
}
-static EmpathyContact *
-tp_call_dup_contact_from_handle (EmpathyTpCall *call, TpHandle handle)
+static void
+tp_call_got_contact_cb (EmpathyTpContactFactory *factory,
+ GList *contacts,
+ gpointer user_data,
+ GObject *call)
{
EmpathyTpCallPriv *priv = GET_PRIV (call);
- EmpathyContactFactory *factory;
- McAccount *account;
- EmpathyContact *contact;
-
- factory = empathy_contact_factory_dup_singleton ();
- account = empathy_channel_get_account (priv->channel);
- contact = empathy_contact_factory_get_from_handle (factory, account, handle);
-
- g_object_unref (factory);
- g_object_unref (account);
- return contact;
+ priv->contact = g_object_ref (contacts->data);
+ priv->is_incoming = TRUE;
+ priv->status = EMPATHY_TP_CALL_STATUS_PENDING;
+ g_object_notify (G_OBJECT (call), "is-incoming");
+ g_object_notify (G_OBJECT (call), "contact");
+ g_object_notify (G_OBJECT (call), "status");
}
static void
@@ -288,13 +286,16 @@ tp_call_update_status (EmpathyTpCall *call)
{
if (priv->contact == NULL && iter.element != self_handle)
{
+ EmpathyTpContactFactory *factory;
+ TpConnection *connection;
+
/* We found the remote contact */
- priv->contact = tp_call_dup_contact_from_handle (call, iter.element);
- priv->is_incoming = TRUE;
- priv->status = EMPATHY_TP_CALL_STATUS_PENDING;
- g_object_notify (G_OBJECT (call), "is-incoming");
- g_object_notify (G_OBJECT (call), "contact");
- g_object_notify (G_OBJECT (call), "status");
+ connection = tp_channel_borrow_connection (priv->channel);
+ factory = empathy_tp_contact_factory_dup_singleton (connection);
+ empathy_tp_contact_factory_get_from_handles (factory, 1,
+ &iter.element, tp_call_got_contact_cb, NULL, NULL,
+ G_OBJECT (call));
+ g_object_unref (factory);
}
if (priv->status == EMPATHY_TP_CALL_STATUS_PENDING &&
@@ -309,20 +310,6 @@ tp_call_update_status (EmpathyTpCall *call)
g_object_unref (call);
}
-static void
-tp_call_members_changed_cb (TpChannel *channel,
- gchar *message,
- GArray *added,
- GArray *removed,
- GArray *local_pending,
- GArray *remote_pending,
- guint actor,
- guint reason,
- EmpathyTpCall *call)
-{
- tp_call_update_status (call);
-}
-
void
empathy_tp_call_to (EmpathyTpCall *call, EmpathyContact *contact)
{
@@ -392,8 +379,8 @@ tp_call_constructor (GType type,
/* Update status when members changes */
tp_call_update_status (call);
- g_signal_connect (priv->channel, "group-members-changed",
- G_CALLBACK (tp_call_members_changed_cb), call);
+ g_signal_connect_swapped (priv->channel, "group-members-changed",
+ G_CALLBACK (tp_call_update_status), call);
return object;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]