From af4d97822b9055fd8a7670b53b28c7c1f820ec65 Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Mon, 14 Nov 2011 11:23:57 +0100 Subject: Remove tp-yell and use TpCallChannel --- libempathy-gtk/empathy-call-utils.c | 89 ++++++++++++++++++++++++++++++-- libempathy-gtk/empathy-call-utils.h | 5 ++ libempathy-gtk/empathy-log-window.c | 8 ++- libempathy-gtk/empathy-new-call-dialog.c | 2 - 4 files changed, 92 insertions(+), 12 deletions(-) (limited to 'libempathy-gtk') 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 -#include - #include "empathy-call-utils.h" #include @@ -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; +} diff --git a/libempathy-gtk/empathy-call-utils.h b/libempathy-gtk/empathy-call-utils.h index 836103100..99e4ecf91 100644 --- a/libempathy-gtk/empathy-call-utils.h +++ b/libempathy-gtk/empathy-call-utils.h @@ -43,6 +43,11 @@ GHashTable * empathy_call_create_streamed_media_request (const gchar *contact, void empathy_call_set_stream_properties (GstElement *element, gboolean echo_cancellation); +TpSendingState empathy_call_channel_get_video_state (TpCallChannel *self); +void empathy_call_channel_send_video (TpCallChannel *self, + gboolean send); + + G_END_DECLS #endif /* __EMPATHY_CALL_UTILS_H__ */ diff --git a/libempathy-gtk/empathy-log-window.c b/libempathy-gtk/empathy-log-window.c index 51a47c7a3..13fdefbd5 100644 --- a/libempathy-gtk/empathy-log-window.c +++ b/libempathy-gtk/empathy-log-window.c @@ -34,8 +34,6 @@ #include #include -#include - #include #ifdef HAVE_CALL_LOGS # include @@ -873,7 +871,7 @@ maybe_refresh_logs (TpChannel *channel, !(event_mask & TPL_EVENT_MASK_TEXT)) goto out; if ((!tp_strdiff (type, TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA) || - !tp_strdiff (type, TPY_IFACE_CHANNEL_TYPE_CALL)) && + !tp_strdiff (type, TP_IFACE_CHANNEL_TYPE_CALL)) && !(event_mask & TPL_EVENT_MASK_CALL)) goto out; @@ -1015,7 +1013,7 @@ observe_channels (TpSimpleObserver *observer, tp_g_signal_connect_object (channel, "invalidated", G_CALLBACK (on_channel_ended), self, 0); } - else if (!tp_strdiff (type, TPY_IFACE_CHANNEL_TYPE_CALL) || + else if (!tp_strdiff (type, TP_IFACE_CHANNEL_TYPE_CALL) || !tp_strdiff (type, TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA)) { g_hash_table_insert (self->priv->channels, @@ -1060,7 +1058,7 @@ log_window_create_observer (EmpathyLogWindow *self) tp_base_client_take_observer_filter (self->priv->observer, tp_asv_new ( TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, - TPY_IFACE_CHANNEL_TYPE_CALL, + TP_IFACE_CHANNEL_TYPE_CALL, NULL)); tp_base_client_register (self->priv->observer, NULL); diff --git a/libempathy-gtk/empathy-new-call-dialog.c b/libempathy-gtk/empathy-new-call-dialog.c index 0fecedde5..ba44721d3 100644 --- a/libempathy-gtk/empathy-new-call-dialog.c +++ b/libempathy-gtk/empathy-new-call-dialog.c @@ -28,8 +28,6 @@ #include -#include - #include #include #include -- cgit v1.2.3