[telepathy-gabble/master] gabble_media_factory_get_contact_caps: implement (in terms of _gabble_media_factory_caps_to_typeflags)
Simon McVittie
simon.mcvittie at collabora.co.uk
Wed Aug 26 09:57:09 PDT 2009
---
src/media-factory.c | 34 ++++++++++++++++++++++++++++++++++
1 files changed, 34 insertions(+), 0 deletions(-)
diff --git a/src/media-factory.c b/src/media-factory.c
index b9adc60..83d7cf0 100644
--- a/src/media-factory.c
+++ b/src/media-factory.c
@@ -777,6 +777,40 @@ gabble_media_factory_get_contact_caps (GabbleCapsChannelManager *manager,
const GabbleCapabilitySet *caps,
GPtrArray *arr)
{
+ TpChannelMediaCapabilities typeflags =
+ _gabble_media_factory_caps_to_typeflags (caps);
+ GValueArray *va;
+ const gchar * const *allowed;
+
+ typeflags &= (TP_CHANNEL_MEDIA_CAPABILITY_AUDIO |
+ TP_CHANNEL_MEDIA_CAPABILITY_VIDEO);
+
+ switch (typeflags)
+ {
+ case 0:
+ return;
+
+ case TP_CHANNEL_MEDIA_CAPABILITY_AUDIO:
+ allowed = audio_allowed;
+ break;
+
+ case TP_CHANNEL_MEDIA_CAPABILITY_VIDEO:
+ allowed = video_allowed;
+ break;
+
+ default: /* both */
+ allowed = both_allowed;
+ }
+
+ va = g_value_array_new (2);
+ g_value_array_append (va, NULL);
+ g_value_array_append (va, NULL);
+ g_value_init (va->values + 0, TP_HASH_TYPE_CHANNEL_CLASS);
+ g_value_init (va->values + 1, G_TYPE_STRV);
+ g_value_take_boxed (va->values + 0, gabble_media_factory_channel_class ());
+ g_value_set_static_boxed (va->values + 1, allowed);
+
+ g_ptr_array_add (arr, va);
}
static void
--
1.5.6.5
More information about the telepathy-commits
mailing list