From e1db5549ea2349d0d17509171ffe7f977676acb7 Mon Sep 17 00:00:00 2001 From: Emilio Pozuelo Monfort Date: Thu, 30 Jun 2011 11:29:35 +0100 Subject: Revert "Don't look for Call channels" Since we support Call in master nowadays. This reverts commit 5b894aa5ad8702279c0458b890025a22172bfdd1. https://bugzilla.gnome.org/show_bug.cgi?id=653730 --- src/empathy-call-observer.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/empathy-call-observer.c b/src/empathy-call-observer.c index c6ba53c95..8ce57a3e1 100644 --- a/src/empathy-call-observer.c +++ b/src/empathy-call-observer.c @@ -24,6 +24,8 @@ #include +#include + #include #include @@ -183,7 +185,8 @@ find_main_channel (GList *channels) channel_type = tp_channel_get_channel_type_id (channel); - if (channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_STREAMED_MEDIA) + if (channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_STREAMED_MEDIA || + channel_type == TPY_IFACE_QUARK_CHANNEL_TYPE_CALL) return channel; } @@ -193,8 +196,21 @@ find_main_channel (GList *channels) static gboolean has_ongoing_calls (EmpathyCallObserver *self) { - if (self->priv->channels != NULL) - return TRUE; + GList *l; + + for (l = self->priv->channels; l != NULL; l = l->next) + { + TpChannel *channel = TP_CHANNEL (l->data); + GQuark type = tp_channel_get_channel_type_id (channel); + + /* Check that Call channels are not ended */ + if (type == TPY_IFACE_QUARK_CHANNEL_TYPE_CALL && + tpy_call_channel_get_state (TPY_CALL_CHANNEL (channel), NULL, NULL) + == TPY_CALL_STATE_ENDED) + continue; + + return TRUE; + } return FALSE; } @@ -358,7 +374,7 @@ empathy_call_observer_init (EmpathyCallObserver *self) TP_CLIENT_CHANNEL_FACTORY (factory)); g_object_unref (factory); - /* Observe StreamedMedia channels */ + /* Observe Call and StreamedMedia channels */ tp_base_client_take_observer_filter (self->priv->observer, tp_asv_new ( TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, @@ -366,6 +382,13 @@ empathy_call_observer_init (EmpathyCallObserver *self) TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT, NULL)); + 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_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, + TP_HANDLE_TYPE_CONTACT, + NULL)); tp_base_client_set_observer_delay_approvers (self->priv->observer, TRUE); -- cgit v1.2.3