[telepathy-gabble/master] gabble_capabilities_get_legacy: add

Simon McVittie simon.mcvittie at collabora.co.uk
Mon Aug 24 11:22:04 PDT 2009


This is the set of capabilities that can be set by using
AdvertiseCapabilities, and should not be wiped out by SetSelfCapabilities.
This madness can go away when we switch to ContactCapabilities draft 2.
---
 src/capabilities.c |   16 ++++++++++++++++
 src/capabilities.h |    1 +
 2 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/src/capabilities.c b/src/capabilities.c
index 0ce3565..e286cd3 100644
--- a/src/capabilities.c
+++ b/src/capabilities.c
@@ -81,6 +81,7 @@ static const Feature quirks[] = {
       { 0, NULL, 0 }
 };
 
+static GabbleCapabilitySet *legacy_caps = NULL;
 static GabbleCapabilitySet *voice_v1_caps = NULL;
 static GabbleCapabilitySet *video_v1_caps = NULL;
 static GabbleCapabilitySet *any_audio_caps = NULL;
@@ -91,6 +92,12 @@ static GabbleCapabilitySet *geoloc_caps = NULL;
 static GabbleCapabilitySet *olpc_caps = NULL;
 
 const GabbleCapabilitySet *
+gabble_capabilities_get_legacy (void)
+{
+  return legacy_caps;
+}
+
+const GabbleCapabilitySet *
 gabble_capabilities_get_bundle_voice_v1 (void)
 {
   return voice_v1_caps;
@@ -196,6 +203,13 @@ gabble_capabilities_init (GabbleConnection *conn)
 
       /* make the pre-cooked bundles */
 
+      legacy_caps = gabble_capability_set_new ();
+
+      for (feat = self_advertised_features; feat->ns != NULL; feat++)
+        {
+          gabble_capability_set_add (legacy_caps, feat->ns);
+        }
+
       voice_v1_caps = gabble_capability_set_new ();
       gabble_capability_set_add (voice_v1_caps, NS_GOOGLE_FEAT_VOICE);
 
@@ -242,6 +256,7 @@ gabble_capabilities_finalize (GabbleConnection *conn)
 
   if (--feature_handles_refcount == 0)
     {
+      gabble_capability_set_free (legacy_caps);
       gabble_capability_set_free (voice_v1_caps);
       gabble_capability_set_free (video_v1_caps);
       gabble_capability_set_free (any_audio_caps);
@@ -251,6 +266,7 @@ gabble_capabilities_finalize (GabbleConnection *conn)
       gabble_capability_set_free (geoloc_caps);
       gabble_capability_set_free (olpc_caps);
 
+      legacy_caps = NULL;
       voice_v1_caps = NULL;
       video_v1_caps = NULL;
       any_audio_caps = NULL;
diff --git a/src/capabilities.h b/src/capabilities.h
index b834422..59a384f 100644
--- a/src/capabilities.h
+++ b/src/capabilities.h
@@ -99,6 +99,7 @@ typedef gboolean (*GabbleCapabilitySetPredicate) (
   ((GabbleCapabilitySetPredicate) gabble_capability_set_at_least)
 
 /* Some useful capability sets for Jingle etc. */
+const GabbleCapabilitySet *gabble_capabilities_get_legacy (void);
 const GabbleCapabilitySet *gabble_capabilities_get_any_audio (void);
 const GabbleCapabilitySet *gabble_capabilities_get_any_video (void);
 const GabbleCapabilitySet *gabble_capabilities_get_any_transport (void);
-- 
1.5.6.5




More information about the telepathy-commits mailing list