aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-call-utils.c
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@gmail.com>2011-11-14 18:23:57 +0800
committerXavier Claessens <xavier.claessens@collabora.co.uk>2012-01-10 21:26:59 +0800
commitaf4d97822b9055fd8a7670b53b28c7c1f820ec65 (patch)
treeea2618caaee98e447e20e87dedf72ccd3d2bcbbb /libempathy-gtk/empathy-call-utils.c
parent66e1966ee3b3303968997f229f62ada8d7b519ba (diff)
downloadgsoc2013-empathy-af4d97822b9055fd8a7670b53b28c7c1f820ec65.tar
gsoc2013-empathy-af4d97822b9055fd8a7670b53b28c7c1f820ec65.tar.gz
gsoc2013-empathy-af4d97822b9055fd8a7670b53b28c7c1f820ec65.tar.bz2
gsoc2013-empathy-af4d97822b9055fd8a7670b53b28c7c1f820ec65.tar.lz
gsoc2013-empathy-af4d97822b9055fd8a7670b53b28c7c1f820ec65.tar.xz
gsoc2013-empathy-af4d97822b9055fd8a7670b53b28c7c1f820ec65.tar.zst
gsoc2013-empathy-af4d97822b9055fd8a7670b53b28c7c1f820ec65.zip
Remove tp-yell and use TpCallChannel
Diffstat (limited to 'libempathy-gtk/empathy-call-utils.c')
-rw-r--r--libempathy-gtk/empathy-call-utils.c89
1 files changed, 84 insertions, 5 deletions
diff --git a/libempathy-gtk/empathy-call-utils.c b/libempathy-gtk/empathy-call-utils.c
index 16526d354..c2363c419 100644
--- a/libempathy-gtk/empathy-call-utils.c
+++ b/libempathy-gtk/empathy-call-utils.c
@@ -27,8 +27,6 @@
#include <telepathy-glib/telepathy-glib.h>
-#include <telepathy-yell/telepathy-yell.h>
-
#include "empathy-call-utils.h"
#include <libempathy/empathy-gsettings.h>
@@ -85,14 +83,14 @@ empathy_call_create_call_request (const gchar *contact,
{
return tp_asv_new (
TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
- TPY_IFACE_CHANNEL_TYPE_CALL,
+ TP_IFACE_CHANNEL_TYPE_CALL,
TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT,
TP_HANDLE_TYPE_CONTACT,
TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING,
contact,
- TPY_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, G_TYPE_BOOLEAN,
+ TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, G_TYPE_BOOLEAN,
initial_audio,
- TPY_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, G_TYPE_BOOLEAN,
+ TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, G_TYPE_BOOLEAN,
initial_video,
NULL);
}
@@ -283,3 +281,84 @@ empathy_call_set_stream_properties (GstElement *element,
g_object_unref (gsettings_call);
}
+
+/* Copied from telepathy-yell call-channel.c */
+void
+empathy_call_channel_send_video (TpCallChannel *self,
+ gboolean send)
+{
+ GPtrArray *contents;
+ gboolean found = FALSE;
+ guint i;
+
+ g_return_if_fail (TP_IS_CALL_CHANNEL (self));
+
+ /* Loop over all the contents, if some of them a video set all their
+ * streams to sending, otherwise request a video channel in case we want to
+ * sent */
+ contents = tp_call_channel_get_contents (self);
+ for (i = 0 ; i < contents->len ; i++)
+ {
+ TpCallContent *content = g_ptr_array_index (contents, i);
+
+ if (tp_call_content_get_media_type (content) ==
+ TP_MEDIA_STREAM_TYPE_VIDEO)
+ {
+ GPtrArray *streams;
+ guint j;
+
+ found = TRUE;
+ streams = tp_call_content_get_streams (content);
+ for (j = 0; j < streams->len; j++)
+ {
+ TpCallStream *stream = g_ptr_array_index (streams, j);
+
+ tp_call_stream_set_sending_async (stream, send, NULL, NULL);
+ }
+ }
+ }
+
+ if (send && !found)
+ {
+ tp_call_channel_add_content_async (self, "video",
+ TP_MEDIA_STREAM_TYPE_VIDEO, NULL, NULL);
+ }
+}
+
+/* Copied from telepathy-yell call-channel.c */
+TpSendingState
+empathy_call_channel_get_video_state (TpCallChannel *self)
+{
+ TpSendingState result = TP_SENDING_STATE_NONE;
+ GPtrArray *contents;
+ guint i;
+
+ g_return_val_if_fail (TP_IS_CALL_CHANNEL (self), TP_SENDING_STATE_NONE);
+
+ contents = tp_call_channel_get_contents (self);
+ for (i = 0 ; i < contents->len ; i++)
+ {
+ TpCallContent *content = g_ptr_array_index (contents, i);
+
+ if (tp_call_content_get_media_type (content) ==
+ TP_MEDIA_STREAM_TYPE_VIDEO)
+ {
+ GPtrArray *streams;
+ guint j;
+
+ streams = tp_call_content_get_streams (content);
+ for (j = 0; j < streams->len; j++)
+ {
+ TpCallStream *stream = g_ptr_array_index (streams, j);
+ TpSendingState state;
+
+ state = tp_call_stream_get_local_sending_state (stream);
+ if (state != TP_SENDING_STATE_PENDING_STOP_SENDING &&
+ state > result)
+ result = state;
+ }
+ }
+ }
+
+ return result;
+}