diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/empathy-call-window.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/empathy-call-window.c b/src/empathy-call-window.c index ad3653b6d..ca1741d22 100644 --- a/src/empathy-call-window.c +++ b/src/empathy-call-window.c @@ -3468,19 +3468,20 @@ empathy_call_window_connect_handler (EmpathyCallWindow *self) g_signal_connect (priv->handler, "sink-pad-removed", G_CALLBACK (empathy_call_window_sink_removed_cb), self); + /* We connect to ::call-channel unconditionally since we'll + * get new channels if we hangup and redial or if we reuse the + * call window. */ + g_signal_connect (priv->handler, "notify::call-channel", + G_CALLBACK (call_handler_notify_call_cb), window); + g_object_get (priv->handler, "call-channel", &call, NULL); if (call != NULL) { + /* We won't get notify::call-channel for this channel, so + * directly call the callback. */ call_handler_notify_call_cb (priv->handler, NULL, self); g_object_unref (call); } - else - { - /* call-channel doesn't exist yet, we'll connect signals once it has been - * set */ - g_signal_connect (priv->handler, "notify::call-channel", - G_CALLBACK (call_handler_notify_call_cb), self); - } } static void |