]> git.0d.be Git - empathy.git/blobdiff - libempathy/empathy-tp-call.c
On incoming calls don't request a new audio stream. This makes streams collide and...
[empathy.git] / libempathy / empathy-tp-call.c
index 03dff8033103dc5f85b097bf555beea103c3f057..6c90f49d890a967fba8feac6b387f5627df86c92 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <telepathy-glib/proxy-subclass.h>
 #include <telepathy-glib/dbus.h>
+#include <telepathy-glib/interfaces.h>
 
 #include <extensions/extensions.h>
 
@@ -272,16 +273,15 @@ tp_call_member_added_cb (EmpathyTpGroup *group,
 {
   EmpathyTpCallPriv *priv = GET_PRIV (call);
 
+  g_object_ref (call);
   if (!priv->contact && !empathy_contact_is_user (contact))
     {
       priv->contact = g_object_ref (contact);
       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");     
-      tp_call_request_streams_for_capabilities (call,
-          EMPATHY_CAPABILITIES_AUDIO);
+      g_object_notify (G_OBJECT (call), "contact");
+      g_object_notify (G_OBJECT (call), "status");
     }
 
   if (priv->status == EMPATHY_TP_CALL_STATUS_PENDING &&
@@ -291,6 +291,7 @@ tp_call_member_added_cb (EmpathyTpGroup *group,
       priv->status = EMPATHY_TP_CALL_STATUS_ACCEPTED;
       g_object_notify (G_OBJECT (call), "status");
     }
+  g_object_unref (call);
 }
 
 static void
@@ -303,6 +304,7 @@ tp_call_remote_pending_cb (EmpathyTpGroup *group,
 {
   EmpathyTpCallPriv *priv = GET_PRIV (call);
 
+  g_object_ref (call);
   if (!priv->contact && !empathy_contact_is_user (contact))
     {
       priv->contact = g_object_ref (contact);
@@ -314,6 +316,7 @@ tp_call_remote_pending_cb (EmpathyTpGroup *group,
       tp_call_request_streams_for_capabilities (call,
           EMPATHY_CAPABILITIES_AUDIO);
     }
+  g_object_unref (call);
 }
 
 static void
@@ -836,3 +839,14 @@ empathy_tp_call_stop_tone (EmpathyTpCall *call)
       "stoping tone", NULL, G_OBJECT (call));
 }
 
+gboolean
+empathy_tp_call_has_dtmf (EmpathyTpCall *call)
+{
+  EmpathyTpCallPriv *priv = GET_PRIV (call);
+
+  g_return_val_if_fail (EMPATHY_IS_TP_CALL (call), FALSE);
+
+  return tp_proxy_has_interface_by_id (priv->channel,
+      TP_IFACE_QUARK_CHANNEL_INTERFACE_DTMF);
+}
+