[telepathy-gabble/master] capabilities_get_initial_caps: return a set instead of a bitfield
Simon McVittie
simon.mcvittie at collabora.co.uk
Tue Sep 8 04:10:16 PDT 2009
---
src/capabilities.c | 36 +++++++++++++++++++-----------------
src/capabilities.h | 8 ++------
src/connection.c | 7 +++----
3 files changed, 24 insertions(+), 27 deletions(-)
diff --git a/src/capabilities.c b/src/capabilities.c
index 1b33839..57a7d27 100644
--- a/src/capabilities.c
+++ b/src/capabilities.c
@@ -86,6 +86,7 @@ static GabbleCapabilitySet *video_v1_caps = NULL;
static GabbleCapabilitySet *any_audio_caps = NULL;
static GabbleCapabilitySet *any_video_caps = NULL;
static GabbleCapabilitySet *any_transport_caps = NULL;
+static GabbleCapabilitySet *initial_caps = NULL;
const GabbleCapabilitySet *
gabble_capabilities_get_bundle_voice_v1 (void)
@@ -117,6 +118,12 @@ gabble_capabilities_get_any_transport (void)
return any_transport_caps;
}
+const GabbleCapabilitySet *
+gabble_capabilities_get_initial_caps (void)
+{
+ return initial_caps;
+}
+
static gboolean
omits_content_creators (LmMessageNode *identity)
{
@@ -164,6 +171,8 @@ gabble_capabilities_init (GabbleConnection *conn)
if (feature_handles_refcount++ == 0)
{
+ const Feature *feat;
+
g_assert (feature_handles == NULL);
/* TpDynamicHandleRepo wants a handle type, which isn't relevant here
* (we're just using it as a string pool). Use an arbitrary handle type
@@ -193,6 +202,14 @@ gabble_capabilities_init (GabbleConnection *conn)
gabble_capability_set_add (any_transport_caps, NS_GOOGLE_TRANSPORT_P2P);
gabble_capability_set_add (any_transport_caps, NS_JINGLE_TRANSPORT_ICEUDP);
gabble_capability_set_add (any_transport_caps, NS_JINGLE_TRANSPORT_RAWUDP);
+
+ initial_caps = gabble_capability_set_new ();
+
+ for (feat = self_advertised_features; feat->ns != NULL; feat++)
+ {
+ if (feat->feature_type == FEATURE_FIXED)
+ gabble_capability_set_add (initial_caps, feat->ns);
+ }
}
g_assert (feature_handles != NULL);
@@ -212,12 +229,14 @@ gabble_capabilities_finalize (GabbleConnection *conn)
gabble_capability_set_free (any_audio_caps);
gabble_capability_set_free (any_video_caps);
gabble_capability_set_free (any_transport_caps);
+ gabble_capability_set_free (initial_caps);
voice_v1_caps = NULL;
video_v1_caps = NULL;
any_audio_caps = NULL;
any_video_caps = NULL;
any_transport_caps = NULL;
+ initial_caps = NULL;
g_object_unref (feature_handles);
feature_handles = NULL;
@@ -290,23 +309,6 @@ capabilities_fill_cache (GabblePresenceCache *cache)
PRESENCE_CAP_GOOGLE_VOICE, NS_GOOGLE_FEAT_VOICE);
}
-GabblePresenceCapabilities
-capabilities_get_initial_caps ()
-{
- GabblePresenceCapabilities ret = 0;
- const Feature *feat;
-
- for (feat = self_advertised_features; NULL != feat->ns; feat++)
- {
- if (feat->feature_type == FEATURE_FIXED)
- {
- ret |= feat->caps;
- }
- }
-
- return ret;
-}
-
const CapabilityConversionData capabilities_conversions[] =
{
{ TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA,
diff --git a/src/capabilities.h b/src/capabilities.h
index af5c207..fa73acb 100644
--- a/src/capabilities.h
+++ b/src/capabilities.h
@@ -119,12 +119,8 @@ const GabbleCapabilitySet *gabble_capabilities_get_bundle_video_v1 (void);
*/
void capabilities_fill_cache (GabblePresenceCache *cache);
-/*
- * capabilities_get_initial_caps
- *
- * Return the GabblePresenceCapabilities we always have
- */
-GabblePresenceCapabilities capabilities_get_initial_caps (void);
+/* Return the capabilities we always have */
+const GabbleCapabilitySet *gabble_capabilities_get_initial_caps (void);
GabblePresenceCapabilities capabilities_parse (const GabbleCapabilitySet *cap_set);
diff --git a/src/connection.c b/src/connection.c
index 5c857bf..685272d 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -2064,7 +2064,7 @@ connection_auth_cb (LmConnection *lmconn,
GError *error = NULL;
const gchar *jid;
GabblePresenceCapabilities caps;
- GabbleCapabilitySet *cap_set;
+ const GabbleCapabilitySet *cap_set;
if (base->status != TP_CONNECTION_STATUS_CONNECTING)
{
@@ -2126,11 +2126,10 @@ connection_auth_cb (LmConnection *lmconn,
GABBLE_PRESENCE_AVAILABLE, NULL, priv->priority);
/* set initial capabilities */
- caps = capabilities_get_initial_caps ();
- cap_set = gabble_capability_set_new_from_flags (caps);
+ cap_set = gabble_capabilities_get_initial_caps ();
+ caps = capabilities_parse (cap_set);
gabble_presence_set_capabilities (conn->self_presence, priv->resource,
cap_set, caps, priv->caps_serial++);
- gabble_capability_set_free (cap_set);
if (!gabble_disco_request_with_timeout (conn->disco, GABBLE_DISCO_TYPE_INFO,
priv->stream_server, NULL,
--
1.5.6.5
More information about the telepathy-commits
mailing list