aboutsummaryrefslogtreecommitdiffstats
path: root/src/empathy-call-window.c
diff options
context:
space:
mode:
authorEmilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk>2011-03-16 03:06:20 +0800
committerEmilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk>2011-03-16 03:21:28 +0800
commit15761dfafa40dce3e5acb2f9fecc5b808fa11e47 (patch)
tree5b1774c1f3a1c479a63841364a989e60606461bd /src/empathy-call-window.c
parentd07f730181b12a13b7af86f9095a7b6c86648e10 (diff)
downloadgsoc2013-empathy-15761dfafa40dce3e5acb2f9fecc5b808fa11e47.tar
gsoc2013-empathy-15761dfafa40dce3e5acb2f9fecc5b808fa11e47.tar.gz
gsoc2013-empathy-15761dfafa40dce3e5acb2f9fecc5b808fa11e47.tar.bz2
gsoc2013-empathy-15761dfafa40dce3e5acb2f9fecc5b808fa11e47.tar.lz
gsoc2013-empathy-15761dfafa40dce3e5acb2f9fecc5b808fa11e47.tar.xz
gsoc2013-empathy-15761dfafa40dce3e5acb2f9fecc5b808fa11e47.tar.zst
gsoc2013-empathy-15761dfafa40dce3e5acb2f9fecc5b808fa11e47.zip
Don't start the Call when the streams start
Since that can happen before the call is accepted. Instead of that, wait for the Call state to be ACCEPTED.
Diffstat (limited to 'src/empathy-call-window.c')
-rw-r--r--src/empathy-call-window.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/empathy-call-window.c b/src/empathy-call-window.c
index 6db01d2ef..282e0f9a9 100644
--- a/src/empathy-call-window.c
+++ b/src/empathy-call-window.c
@@ -2297,16 +2297,25 @@ empathy_call_window_video_stream_error (TpyCallChannel *call,
}
#endif
-static gboolean
-empathy_call_window_connected (gpointer user_data)
+static void
+empathy_call_window_state_changed_cb (EmpathyCallHandler *handler,
+ TpyCallState state,
+ EmpathyCallWindow *self)
{
- EmpathyCallWindow *self = EMPATHY_CALL_WINDOW (user_data);
EmpathyCallWindowPriv *priv = GET_PRIV (self);
TpyCallChannel *call;
gboolean can_send_video;
- empathy_sound_stop (EMPATHY_SOUND_PHONE_OUTGOING);
+ if (state != TPY_CALL_STATE_ACCEPTED)
+ return;
+
+ if (priv->call_state == CONNECTED)
+ return;
+ g_timer_start (priv->timer);
+ priv->call_state = CONNECTED;
+
+ empathy_sound_stop (EMPATHY_SOUND_PHONE_OUTGOING);
can_send_video = priv->video_input != NULL &&
empathy_contact_can_voip_video (priv->contact);
@@ -2348,8 +2357,6 @@ empathy_call_window_connected (gpointer user_data)
empathy_call_window_update_timer (self);
gtk_action_set_sensitive (priv->menu_fullscreen, TRUE);
-
- return FALSE;
}
static gboolean
@@ -2376,13 +2383,6 @@ empathy_call_window_src_added_cb (EmpathyCallHandler *handler,
g_mutex_lock (priv->lock);
- if (priv->call_state != CONNECTED)
- {
- g_timer_start (priv->timer);
- priv->timer_id = g_idle_add (empathy_call_window_connected, self);
- priv->call_state = CONNECTED;
- }
-
switch (media_type)
{
case TP_MEDIA_STREAM_TYPE_AUDIO:
@@ -2671,6 +2671,8 @@ empathy_call_window_realized_cb (GtkWidget *widget, EmpathyCallWindow *window)
EmpathyCallWindowPriv *priv = GET_PRIV (window);
TpyCallChannel *call;
+ g_signal_connect (priv->handler, "state-changed",
+ G_CALLBACK (empathy_call_window_state_changed_cb), window);
g_signal_connect (priv->handler, "conference-added",
G_CALLBACK (empathy_call_window_conference_added_cb), window);
g_signal_connect (priv->handler, "conference-removed",