[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