diff options
author | Sjoerd Simons <sjoerd.simons@collabora.co.uk> | 2009-01-10 00:13:11 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2009-01-10 00:13:11 +0800 |
commit | fece418a6d39950fbdf86db44b503029046250dc (patch) | |
tree | e60f081bf4826d4b3f4185e29ace77d3a437a84d /libempathy | |
parent | 19d7725211923db6311b52a8e34026a80bec8612 (diff) | |
download | gsoc2013-empathy-fece418a6d39950fbdf86db44b503029046250dc.tar gsoc2013-empathy-fece418a6d39950fbdf86db44b503029046250dc.tar.gz gsoc2013-empathy-fece418a6d39950fbdf86db44b503029046250dc.tar.bz2 gsoc2013-empathy-fece418a6d39950fbdf86db44b503029046250dc.tar.lz gsoc2013-empathy-fece418a6d39950fbdf86db44b503029046250dc.tar.xz gsoc2013-empathy-fece418a6d39950fbdf86db44b503029046250dc.tar.zst gsoc2013-empathy-fece418a6d39950fbdf86db44b503029046250dc.zip |
Disconnect signal handlers from the head of the queue before destroying the queue
Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
svn path=/trunk/; revision=2147
Diffstat (limited to 'libempathy')
-rw-r--r-- | libempathy/empathy-tp-chat.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c index 77b56bfc0..2ac483061 100644 --- a/libempathy/empathy-tp-chat.c +++ b/libempathy/empathy-tp-chat.c @@ -914,6 +914,16 @@ tp_chat_dispose (GObject *object) g_object_unref (priv->account); priv->account = NULL; + if (g_queue_get_length (priv->messages_queue) > 0) { + EmpathyMessage *message; + EmpathyContact *contact; + + message = g_queue_peek_head (priv->messages_queue); + contact = empathy_message_get_sender (message); + g_signal_handlers_disconnect_by_func (contact, + tp_chat_sender_ready_notify_cb, object); + } + g_list_foreach (priv->messages_queue->head, (GFunc) g_object_unref, NULL); g_queue_free (priv->messages_queue); @@ -964,17 +974,6 @@ tp_chat_finalize (GObject *object) g_object_unref (priv->account); g_free (priv->id); - if (g_queue_get_length (priv->messages_queue) > 0) { - EmpathyMessage *message; - EmpathyContact *contact; - - message = g_queue_peek_head (priv->messages_queue); - contact = empathy_message_get_sender (message); - g_signal_handlers_disconnect_by_func (contact, - tp_chat_sender_ready_notify_cb, - object); - } - G_OBJECT_CLASS (empathy_tp_chat_parent_class)->finalize (object); } |