[next] telepathy-rakia: Channel managers: delay channel-closed until removed from data structures

Simon McVittie smcv at kemper.freedesktop.org
Wed May 7 02:18:27 PDT 2014


Module: telepathy-rakia
Branch: next
Commit: 8f86daf915a3df51a52c3749dd36f18ca6e3a7c5
URL:    http://cgit.freedesktop.org/telepathy/telepathy-rakia/commit/?id=8f86daf915a3df51a52c3749dd36f18ca6e3a7c5

Author: Simon McVittie <simon.mcvittie at collabora.co.uk>
Date:   Tue Apr 22 14:45:18 2014 +0100

Channel managers: delay channel-closed until removed from data structures

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=77189

---

 rakia/media-manager.c |    6 +++---
 rakia/text-manager.c  |    9 ++++++---
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/rakia/media-manager.c b/rakia/media-manager.c
index 23448ba..d8b99b4 100644
--- a/rakia/media-manager.c
+++ b/rakia/media-manager.c
@@ -248,13 +248,13 @@ call_channel_closed_cb (RakiaCallChannel *chan, gpointer user_data)
   RakiaMediaManager *fac = RAKIA_MEDIA_MANAGER (user_data);
   RakiaMediaManagerPrivate *priv = RAKIA_MEDIA_MANAGER_GET_PRIVATE (fac);
 
-  tp_channel_manager_emit_channel_closed_for_object (TP_CHANNEL_MANAGER (fac),
-      TP_EXPORTABLE_CHANNEL (chan));
-
   if (priv->channels)
     {
       g_ptr_array_remove_fast (priv->channels, chan);
     }
+
+  tp_channel_manager_emit_channel_closed_for_object (TP_CHANNEL_MANAGER (fac),
+      TP_EXPORTABLE_CHANNEL (chan));
 }
 
 /**
diff --git a/rakia/text-manager.c b/rakia/text-manager.c
index 8c3cb86..0f0138e 100644
--- a/rakia/text-manager.c
+++ b/rakia/text-manager.c
@@ -243,9 +243,6 @@ channel_closed (RakiaTextChannel *chan, gpointer user_data)
   TpHandle contact_handle;
   gboolean really_destroyed = TRUE;
 
-  tp_channel_manager_emit_channel_closed_for_object (TP_CHANNEL_MANAGER (self),
-      (TpExportableChannel *) chan);
-
   if (priv->channels == NULL)
     return;
 
@@ -258,11 +255,17 @@ channel_closed (RakiaTextChannel *chan, gpointer user_data)
     {
       DEBUG ("removing text channel with handle %u", contact_handle);
       g_hash_table_remove (priv->channels, GINT_TO_POINTER (contact_handle));
+      tp_channel_manager_emit_channel_closed_for_object (
+          TP_CHANNEL_MANAGER (self),
+          (TpExportableChannel *) chan);
     }
   else
     {
       DEBUG ("reopening channel with handle %u due to pending messages",
              contact_handle);
+      tp_channel_manager_emit_channel_closed_for_object (
+          TP_CHANNEL_MANAGER (self),
+          (TpExportableChannel *) chan);
       tp_channel_manager_emit_new_channel (TP_CHANNEL_MANAGER (self),
           (TpExportableChannel *) chan, NULL);
     }



More information about the telepathy-commits mailing list