aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy/empathy-tp-chat.c
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2008-07-08 04:41:45 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2008-07-08 04:41:45 +0800
commit93978582b8a48175d4721b3d8fddce0d6d55b4fc (patch)
treed7ecfb540e5f055baa758e204a31fdea610c0774 /libempathy/empathy-tp-chat.c
parent6689e15e801f7302d28d4d11cae9bf2f38075da1 (diff)
downloadgsoc2013-empathy-93978582b8a48175d4721b3d8fddce0d6d55b4fc.tar
gsoc2013-empathy-93978582b8a48175d4721b3d8fddce0d6d55b4fc.tar.gz
gsoc2013-empathy-93978582b8a48175d4721b3d8fddce0d6d55b4fc.tar.bz2
gsoc2013-empathy-93978582b8a48175d4721b3d8fddce0d6d55b4fc.tar.lz
gsoc2013-empathy-93978582b8a48175d4721b3d8fddce0d6d55b4fc.tar.xz
gsoc2013-empathy-93978582b8a48175d4721b3d8fddce0d6d55b4fc.tar.zst
gsoc2013-empathy-93978582b8a48175d4721b3d8fddce0d6d55b4fc.zip
Add some comments to the message queue code
svn path=/trunk/; revision=1204
Diffstat (limited to 'libempathy/empathy-tp-chat.c')
-rw-r--r--libempathy/empathy-tp-chat.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c
index 20c9d8f67..534fa5275 100644
--- a/libempathy/empathy-tp-chat.c
+++ b/libempathy/empathy-tp-chat.c
@@ -292,8 +292,9 @@ tp_chat_sender_ready_notify_cb (EmpathyContact *contact,
gboolean removed = FALSE;
/* Emit all messages queued until we find a message with not
- * ready sender. When leaving this loop, sender is the first not ready
- * contact queued and removed tells if at least one message got removed
+ * ready sender (in case of a MUC we could have more than one sender).
+ * When leaving this loop, sender is the first not ready contact queued
+ * and removed tells if at least one message got removed
* from the queue. */
while (priv->message_queue) {
message = priv->message_queue->data;
@@ -314,11 +315,15 @@ tp_chat_sender_ready_notify_cb (EmpathyContact *contact,
}
if (removed) {
+ /* We removed at least one message from the queue, disconnect
+ * the ready signal from the previous contact */
g_signal_handlers_disconnect_by_func (contact,
tp_chat_sender_ready_notify_cb,
chat);
if (priv->message_queue) {
+ /* We still have queued message, connect the ready
+ * signal on the new first message sender. */
g_signal_connect (sender, "notify::ready",
G_CALLBACK (tp_chat_sender_ready_notify_cb),
chat);