empathy r637 - trunk/libempathy
- From: xclaesse svn gnome org
- To: svn-commits-list gnome org
- Subject: empathy r637 - trunk/libempathy
- Date: Fri, 15 Feb 2008 22:28:44 +0000 (GMT)
Author: xclaesse
Date: Fri Feb 15 22:28:44 2008
New Revision: 637
URL: http://svn.gnome.org/viewvc/empathy?rev=637&view=rev
Log:
Merge commit 'sjoerd/master'
Modified:
trunk/libempathy/empathy-contact.c
trunk/libempathy/empathy-contact.h
trunk/libempathy/empathy-tp-call.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 Fri Feb 15 22:28:44 2008
@@ -176,6 +176,10 @@
static void
empathy_contact_init (EmpathyContact *contact)
{
+ EmpathyContactPriv *priv;
+
+ priv = GET_PRIV (contact);
+ priv->capabilities = EMPATHY_CAPABILITIES_UNKNOWN;
}
static void
Modified: trunk/libempathy/empathy-contact.h
==============================================================================
--- trunk/libempathy/empathy-contact.h (original)
+++ trunk/libempathy/empathy-contact.h Fri Feb 15 22:28:44 2008
@@ -54,8 +54,10 @@
};
typedef enum {
+ EMPATHY_CAPABILITIES_NONE = 0,
EMPATHY_CAPABILITIES_AUDIO = 1 << 0,
EMPATHY_CAPABILITIES_VIDEO = 1 << 1,
+ EMPATHY_CAPABILITIES_UNKNOWN = 1 << 7
} EmpathyCapabilities;
GType empathy_contact_get_type (void) G_GNUC_CONST;
Modified: trunk/libempathy/empathy-tp-call.c
==============================================================================
--- trunk/libempathy/empathy-tp-call.c (original)
+++ trunk/libempathy/empathy-tp-call.c Fri Feb 15 22:28:44 2008
@@ -326,6 +326,20 @@
}
static void
+tp_call_request_streams_capabilities_cb (EmpathyContact *contact,
+ GParamSpec *property, gpointer user_data)
+{
+ EmpathyTpCall *call = EMPATHY_TP_CALL (user_data);
+
+ g_signal_handlers_disconnect_by_func (contact,
+ tp_call_request_streams_capabilities_cb,
+ user_data);
+
+ tp_call_request_streams_for_capabilities (call,
+ empathy_contact_get_capabilities (contact));
+}
+
+static void
tp_call_request_streams (EmpathyTpCall *call)
{
EmpathyTpCallPriv *priv = GET_PRIV (call);
@@ -335,7 +349,6 @@
empathy_debug (DEBUG_DOMAIN,
"Requesting appropriate audio/video streams from contact");
- capabilities = empathy_contact_get_capabilities (priv->contact);
/* FIXME: SIP don't have capabilities interface but we know it supports
* only audio and not video. */
@@ -345,6 +358,15 @@
{
capabilities = EMPATHY_CAPABILITIES_AUDIO;
}
+ else
+ {
+ capabilities = empathy_contact_get_capabilities (priv->contact);
+ if (capabilities == EMPATHY_CAPABILITIES_UNKNOWN) {
+ g_signal_connect (G_OBJECT (priv->contact), "notify::capabilities",
+ G_CALLBACK (tp_call_request_streams_capabilities_cb), call);
+ return;
+ }
+ }
tp_call_request_streams_for_capabilities (call, capabilities);
}
Modified: trunk/libempathy/empathy-tp-contact-factory.c
==============================================================================
--- trunk/libempathy/empathy-tp-contact-factory.c (original)
+++ trunk/libempathy/empathy-tp-contact-factory.c Fri Feb 15 22:28:44 2008
@@ -505,8 +505,7 @@
capabilities = empathy_contact_get_capabilities (contact);
if (strcmp (channel_type, TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA) == 0) {
- capabilities &= ~EMPATHY_CAPABILITIES_AUDIO;
- capabilities &= ~EMPATHY_CAPABILITIES_VIDEO;
+ capabilities = EMPATHY_CAPABILITIES_NONE;
if (specific & TP_CHANNEL_MEDIA_CAPABILITY_AUDIO) {
capabilities |= EMPATHY_CAPABILITIES_AUDIO;
}
@@ -534,7 +533,9 @@
if (error) {
empathy_debug (DEBUG_DOMAIN, "Error getting capabilities: %s",
- error->message);
+ error->message);
+ /* FIXME Should set the capabilities of the contacts for which this request
+ * originated to NONE */
goto OUT;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]