[balsa] Do not emit mailbox-changed signal in a sub-thread
- From: Peter Bloomfield <PeterB src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [balsa] Do not emit mailbox-changed signal in a sub-thread
- Date: Thu, 8 Oct 2009 14:08:13 +0000 (UTC)
commit 4a86ee62e2195929e2f5efb2f9b9f543ca004d48
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date: Thu Oct 8 10:07:59 2009 -0400
Do not emit mailbox-changed signal in a sub-thread
libbalsa/mailbox.c | 27 +++++++++++++++++++--------
1 files changed, 19 insertions(+), 8 deletions(-)
---
diff --git a/libbalsa/mailbox.c b/libbalsa/mailbox.c
index 581eb82..e37344a 100644
--- a/libbalsa/mailbox.c
+++ b/libbalsa/mailbox.c
@@ -733,15 +733,9 @@ libbalsa_mailbox_check(LibBalsaMailbox * mailbox)
#endif
}
-void
-libbalsa_mailbox_changed(LibBalsaMailbox * mailbox)
+static gboolean
+lbm_changed(LibBalsaMailbox * mailbox)
{
- if (!g_signal_has_handler_pending
- (mailbox, libbalsa_mailbox_signals[CHANGED], 0, TRUE))
- /* No one cares, so don't set any message counts--that might
- * cause mailbox->view to be created. */
- return;
-
if (MAILBOX_OPEN(mailbox)) {
/* Both counts are valid. */
libbalsa_mailbox_set_total(mailbox,
@@ -759,6 +753,23 @@ libbalsa_mailbox_changed(LibBalsaMailbox * mailbox)
gdk_threads_enter();
g_signal_emit(mailbox, libbalsa_mailbox_signals[CHANGED], 0);
gdk_threads_leave();
+
+ return FALSE;
+}
+
+void
+libbalsa_mailbox_changed(LibBalsaMailbox * mailbox)
+{
+ if (!g_signal_has_handler_pending
+ (mailbox, libbalsa_mailbox_signals[CHANGED], 0, TRUE))
+ /* No one cares, so don't set any message counts--that might
+ * cause mailbox->view to be created. */
+ return;
+
+ if (!libbalsa_am_i_subthread())
+ lbm_changed(mailbox);
+ else
+ g_idle_add((GSourceFunc) lbm_changed, mailbox);
}
/* libbalsa_mailbox_message_match:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]