From cd6761777585a8defa934562abd4a35bc7e816e9 Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Wed, 31 Mar 2010 15:07:45 +0200 Subject: don't recreate a video preview or update the window if we're about to destroy it --- src/empathy-call-window.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/empathy-call-window.c b/src/empathy-call-window.c index 6a5038d24..60210cae4 100644 --- a/src/empathy-call-window.c +++ b/src/empathy-call-window.c @@ -1603,7 +1603,8 @@ empathy_call_window_reset_pipeline (EmpathyCallWindow *self) } static gboolean -empathy_call_window_disconnected (EmpathyCallWindow *self) +empathy_call_window_disconnected (EmpathyCallWindow *self, + gboolean restart) { gboolean could_disconnect = FALSE; EmpathyCallWindowPriv *priv = GET_PRIV (self); @@ -1629,6 +1630,11 @@ empathy_call_window_disconnected (EmpathyCallWindow *self) g_mutex_unlock (priv->lock); + if (!restart) + /* We are about to destroy the window, no need to update it or create + * a video preview */ + return TRUE; + empathy_call_window_status_message (self, _("Disconnected")); gtk_action_set_sensitive (priv->redial, TRUE); @@ -1683,7 +1689,8 @@ empathy_call_window_channel_closed_cb (EmpathyCallHandler *handler, EmpathyCallWindow *self = EMPATHY_CALL_WINDOW (user_data); EmpathyCallWindowPriv *priv = GET_PRIV (self); - if (empathy_call_window_disconnected (self) && priv->call_state == REDIALING) + if (empathy_call_window_disconnected (self, TRUE) && + priv->call_state == REDIALING) empathy_call_window_restart_call (self); } @@ -2438,7 +2445,7 @@ empathy_call_window_bus_message (GstBus *bus, GstMessage *message, } else { - empathy_call_window_disconnected (self); + empathy_call_window_disconnected (self, TRUE); } g_error_free (error); g_free (debug); @@ -2772,7 +2779,7 @@ empathy_call_window_hangup_cb (gpointer object, empathy_call_handler_stop_call (priv->handler); - if (empathy_call_window_disconnected (window)) + if (empathy_call_window_disconnected (window, FALSE)) gtk_widget_destroy (GTK_WIDGET (window)); } -- cgit v1.2.3