[telepathy-gabble/master] Advertise the same caps for StreamedMedia and Call channels

Sjoerd Simons sjoerd.simons at collabora.co.uk
Tue Dec 29 05:34:32 PST 2009


---
 src/media-factory.c |   48 ++++++++++++++++++++++++++++++------------------
 1 files changed, 30 insertions(+), 18 deletions(-)

diff --git a/src/media-factory.c b/src/media-factory.c
index 1985b6f..1913c8a 100644
--- a/src/media-factory.c
+++ b/src/media-factory.c
@@ -896,6 +896,7 @@ gabble_media_factory_represent_client (GabbleCapsChannelManager *manager,
     GabbleCapabilitySet *cap_set)
 {
   static GQuark q_gtalk_p2p = 0, q_ice_udp = 0, q_h264 = 0;
+  static GQuark qc_gtalk_p2p = 0, qc_ice_udp = 0, qc_h264 = 0;
   gboolean gtalk_p2p = FALSE, h264 = FALSE, audio = FALSE, video = FALSE,
            ice_udp = FALSE;
   guint i;
@@ -905,10 +906,16 @@ gabble_media_factory_represent_client (GabbleCapsChannelManager *manager,
     {
       q_gtalk_p2p = g_quark_from_static_string (
           TP_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING "/gtalk-p2p");
+      qc_gtalk_p2p = g_quark_from_static_string (
+          GABBLE_IFACE_CHANNEL_TYPE_CALL "/gtalk-p2p");
       q_ice_udp = g_quark_from_static_string (
           TP_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING "/ice-udp");
+      qc_ice_udp = g_quark_from_static_string (
+          GABBLE_IFACE_CHANNEL_TYPE_CALL "/ice-udp");
       q_h264 = g_quark_from_static_string (
           TP_IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING "/video/h264");
+      qc_h264 = g_quark_from_static_string (
+          GABBLE_IFACE_CHANNEL_TYPE_CALL "/video/h264");
     }
 
   if (cap_tokens != NULL)
@@ -918,22 +925,20 @@ gabble_media_factory_represent_client (GabbleCapsChannelManager *manager,
       for (token = cap_tokens; *token != NULL; token++)
         {
           GQuark quark = g_quark_try_string (*token);
-
-          if (quark == 0)
-            {
-              continue;
-            }
-          else if (quark == q_gtalk_p2p)
-            {
-              gtalk_p2p = TRUE;
-            }
-          else if (quark == q_ice_udp)
-            {
-              ice_udp = TRUE;
-            }
-          else if (quark == q_h264)
+          struct {
+            GQuark quark;
+            gboolean *cap;
+          } q2cap[] = {
+              { q_gtalk_p2p, &gtalk_p2p }, { qc_gtalk_p2p, &gtalk_p2p },
+              { q_ice_udp, &ice_udp }, { qc_ice_udp, &ice_udp },
+              { q_h264, &h264 }, { qc_h264, &h264 },
+              { 0, NULL },
+          };
+
+          for (i = 0; q2cap[i].quark != 0; i++)
             {
-              h264 = TRUE;
+              if (quark == q2cap[i].quark)
+                *(q2cap[i].cap) = TRUE;
             }
         }
     }
@@ -953,7 +958,10 @@ gabble_media_factory_represent_client (GabbleCapsChannelManager *manager,
 
       if (tp_strdiff (tp_asv_get_string (filter,
               TP_IFACE_CHANNEL ".ChannelType"),
-            TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA))
+            TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA)
+          && tp_strdiff (tp_asv_get_string (filter,
+              TP_IFACE_CHANNEL ".ChannelType"),
+            GABBLE_IFACE_CHANNEL_TYPE_CALL))
         {
           /* not interesting to this channel manager */
           continue;
@@ -971,11 +979,15 @@ gabble_media_factory_represent_client (GabbleCapsChannelManager *manager,
         }
 
       if (tp_asv_get_boolean (filter,
-            TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA ".InitialAudio", NULL))
+            TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA ".InitialAudio", NULL)
+          || tp_asv_get_boolean (filter,
+            GABBLE_IFACE_CHANNEL_TYPE_CALL ".InitialAudio", NULL))
         audio = TRUE;
 
       if (tp_asv_get_boolean (filter,
-            TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA ".InitialVideo", NULL))
+            TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA ".InitialVideo", NULL)
+          || tp_asv_get_boolean (filter,
+            GABBLE_IFACE_CHANNEL_TYPE_CALL ".InitialVideo", NULL))
         video = TRUE;
 
       /* If we've picked up all the capabilities we're ever going to, then
-- 
1.5.6.5




More information about the telepathy-commits mailing list