diff options
author | Emilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk> | 2011-02-10 00:48:34 +0800 |
---|---|---|
committer | Emilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk> | 2011-02-10 18:08:31 +0800 |
commit | 4d42a0eb3600ef6577ab96c7251cc45da4dfb989 (patch) | |
tree | 2d8461d14354b2934005eaad80183df4c02361ec /libempathy/empathy-utils.c | |
parent | fd52278cc48cc8fb0a69d61d35eb59e96077e13a (diff) | |
download | gsoc2013-empathy-4d42a0eb3600ef6577ab96c7251cc45da4dfb989.tar gsoc2013-empathy-4d42a0eb3600ef6577ab96c7251cc45da4dfb989.tar.gz gsoc2013-empathy-4d42a0eb3600ef6577ab96c7251cc45da4dfb989.tar.bz2 gsoc2013-empathy-4d42a0eb3600ef6577ab96c7251cc45da4dfb989.tar.lz gsoc2013-empathy-4d42a0eb3600ef6577ab96c7251cc45da4dfb989.tar.xz gsoc2013-empathy-4d42a0eb3600ef6577ab96c7251cc45da4dfb989.tar.zst gsoc2013-empathy-4d42a0eb3600ef6577ab96c7251cc45da4dfb989.zip |
Move a couple of call-related functions to empathy-utils.h
Since the rest of the call stuff will only be compiled for
empathy-av so we don't link every binary against farsight.
Diffstat (limited to 'libempathy/empathy-utils.c')
-rw-r--r-- | libempathy/empathy-utils.c | 62 |
1 files changed, 61 insertions, 1 deletions
diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c index 6a20feebe..038334e27 100644 --- a/libempathy/empathy-utils.c +++ b/libempathy/empathy-utils.c @@ -1,6 +1,6 @@ /* * Copyright (C) 2003-2007 Imendio AB - * Copyright (C) 2007-2008 Collabora Ltd. + * Copyright (C) 2007-2011 Collabora Ltd. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -237,6 +237,66 @@ empathy_xml_node_find_child_prop_value (xmlNodePtr node, return found; } +GHashTable * +empathy_call_create_streamed_media_request (EmpathyContact *contact, + gboolean initial_audio, + gboolean initial_video) +{ + return tp_asv_new ( + TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, + TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, + TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, + TP_HANDLE_TYPE_CONTACT, + TP_PROP_CHANNEL_TARGET_HANDLE, G_TYPE_UINT, + empathy_contact_get_handle (contact), + TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_AUDIO, G_TYPE_BOOLEAN, + initial_audio, + TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_VIDEO, G_TYPE_BOOLEAN, + initial_video, + NULL); +} + +static void +create_media_channel_cb (GObject *source, + GAsyncResult *result, + gpointer user_data) +{ + GError *error = NULL; + + if (!tp_account_channel_request_create_channel_finish (TP_ACCOUNT_CHANNEL_REQUEST (source), + result, + &error)) { + DEBUG ("Failed to create StreamedMedia channel: %s", error->message); + g_error_free (error); + } +} + +void +empathy_call_new_with_streams (EmpathyContact *contact, + gboolean initial_audio, + gboolean initial_video, + gint64 timestamp) +{ + GHashTable *request; + TpAccount *account; + TpAccountChannelRequest *req; + + request = empathy_call_create_streamed_media_request (contact, + initial_audio, + initial_video); + + account = empathy_contact_get_account (contact); + + req = tp_account_channel_request_new (account, request, timestamp); + + tp_account_channel_request_create_channel_async (req, NULL, NULL, + create_media_channel_cb, + NULL); + + g_hash_table_unref (request); + g_object_unref (req); +} + const gchar * empathy_presence_get_default_message (TpConnectionPresenceType presence) { |