[next] telepathy-salut: Delay ChannelClosed until internal data structures have been updated
Simon McVittie
smcv at kemper.freedesktop.org
Wed May 7 02:18:38 PDT 2014
Module: telepathy-salut
Branch: next
Commit: 0acd710674f73f5add940e6b08f78e06c0977c5b
URL: http://cgit.freedesktop.org/telepathy/telepathy-salut/commit/?id=0acd710674f73f5add940e6b08f78e06c0977c5b
Author: Simon McVittie <simon.mcvittie at collabora.co.uk>
Date: Tue Apr 22 16:49:19 2014 +0100
Delay ChannelClosed until internal data structures have been updated
---
src/muc-manager.c | 16 ++++++++++------
src/roomlist-manager.c | 6 +++---
src/tubes-manager.c | 6 +++---
3 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/src/muc-manager.c b/src/muc-manager.c
index bedf9a6..db2b963 100644
--- a/src/muc-manager.c
+++ b/src/muc-manager.c
@@ -419,17 +419,15 @@ muc_channel_closed_cb (SalutMucChannel *chan,
/* channel is actually reappearing, announce it */
if (tp_base_channel_is_respawning (base))
{
+ if (tp_base_channel_is_registered (base))
+ tp_channel_manager_emit_channel_closed_for_object (
+ TP_CHANNEL_MANAGER (self), base);
+
tp_channel_manager_emit_new_channel (TP_CHANNEL_MANAGER (self),
base, NULL);
return;
}
- if (tp_base_channel_is_registered (base))
- {
- tp_channel_manager_emit_channel_closed_for_object (
- TP_CHANNEL_MANAGER (self), base);
- }
-
if (tp_base_channel_is_destroyed (base)
&& priv->text_channels)
{
@@ -438,6 +436,12 @@ muc_channel_closed_cb (SalutMucChannel *chan,
g_hash_table_remove (priv->text_channels, GUINT_TO_POINTER (handle));
}
+
+ if (tp_base_channel_is_registered (base))
+ {
+ tp_channel_manager_emit_channel_closed_for_object (
+ TP_CHANNEL_MANAGER (self), base);
+ }
}
static void
diff --git a/src/roomlist-manager.c b/src/roomlist-manager.c
index a94c079..1d68e9f 100644
--- a/src/roomlist-manager.c
+++ b/src/roomlist-manager.c
@@ -325,15 +325,15 @@ roomlist_channel_closed_cb (SalutRoomlistChannel *channel,
SalutRoomlistManagerPrivate *priv =
SALUT_ROOMLIST_MANAGER_GET_PRIVATE (self);
- tp_channel_manager_emit_channel_closed_for_object (TP_CHANNEL_MANAGER (self),
- TP_BASE_CHANNEL (channel));
-
if (priv->roomlist_channels != NULL)
{
priv->roomlist_channels = g_slist_remove (priv->roomlist_channels,
channel);
g_object_unref (channel);
}
+
+ tp_channel_manager_emit_channel_closed_for_object (TP_CHANNEL_MANAGER (self),
+ TP_BASE_CHANNEL (channel));
}
diff --git a/src/tubes-manager.c b/src/tubes-manager.c
index 91b9e26..62485f6 100644
--- a/src/tubes-manager.c
+++ b/src/tubes-manager.c
@@ -679,11 +679,11 @@ channel_closed_cb (SalutTubeIface *tube,
"id", &id,
NULL);
- tp_channel_manager_emit_channel_closed_for_object (TP_CHANNEL_MANAGER (self),
- TP_BASE_CHANNEL (tube));
-
if (priv->tubes != NULL)
g_hash_table_remove (priv->tubes, GUINT_TO_POINTER (id));
+
+ tp_channel_manager_emit_channel_closed_for_object (TP_CHANNEL_MANAGER (self),
+ TP_BASE_CHANNEL (tube));
}
static guint64
More information about the telepathy-commits
mailing list