]> git.0d.be Git - empathy.git/commitdiff
Do not unref the channel when closing it, wait for the invalidated signal.
authorXavier Claessens <xclaesse@src.gnome.org>
Thu, 15 Jan 2009 10:28:03 +0000 (10:28 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Thu, 15 Jan 2009 10:28:03 +0000 (10:28 +0000)
svn path=/trunk/; revision=2230

libempathy/empathy-tp-call.c

index 3160d3a14f973a9be56e83fa55bc1fa85cd2876d..b01db859d406de935994dbdb380dcadc767ef5ff 100644 (file)
@@ -369,23 +369,6 @@ tp_call_async_cb (TpProxy *proxy,
       DEBUG ("Error %s: %s", (gchar*) user_data, error->message);
 }
 
-static void
-tp_call_close_channel (EmpathyTpCall *call)
-{
-  EmpathyTpCallPriv *priv = GET_PRIV (call);
-
-  if (priv->status == EMPATHY_TP_CALL_STATUS_CLOSED)
-      return;
-
-  DEBUG ("Closing channel");
-
-  tp_cli_channel_call_close (priv->channel, -1,
-      NULL, NULL, NULL, NULL);
-
-  priv->status = EMPATHY_TP_CALL_STATUS_CLOSED;
-  g_object_notify (G_OBJECT (call), "status");
-}
-
 static void
 tp_call_stream_engine_invalidated_cb (TpProxy       *stream_engine,
                                      GQuark         domain,
@@ -394,7 +377,7 @@ tp_call_stream_engine_invalidated_cb (TpProxy       *stream_engine,
                                      EmpathyTpCall *call)
 {
   DEBUG ("Stream engine proxy invalidated: %s", message);
-  tp_call_close_channel (call);
+  empathy_tp_call_close (call);
 }
 
 static void
@@ -414,7 +397,7 @@ tp_call_stream_engine_watch_name_owner_cb (TpDBusDaemon *daemon,
   if (priv->stream_engine_running && G_STR_EMPTY (new_owner))
     {
       DEBUG ("Stream engine falled off the bus");
-      tp_call_close_channel (call);
+      empathy_tp_call_close (call);
       return;
     }
 
@@ -695,13 +678,18 @@ empathy_tp_call_close (EmpathyTpCall *call)
 {
   EmpathyTpCallPriv *priv = GET_PRIV (call);
 
-  g_signal_handlers_disconnect_by_func (priv->channel,
-    tp_call_channel_invalidated_cb, call);
+  g_return_if_fail (EMPATHY_IS_TP_CALL (call));
 
-  tp_call_close_channel (call);
+  if (priv->status == EMPATHY_TP_CALL_STATUS_CLOSED)
+      return;
 
-  g_object_unref (priv->channel);
-  priv->channel = NULL;
+  DEBUG ("Closing channel");
+
+  tp_cli_channel_call_close (priv->channel, -1,
+      NULL, NULL, NULL, NULL);
+
+  priv->status = EMPATHY_TP_CALL_STATUS_CLOSED;
+  g_object_notify (G_OBJECT (call), "status");
 }
 
 void