[balsa/gtk3] Use an idle callback to check message
- From: Peter Bloomfield <PeterB src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [balsa/gtk3] Use an idle callback to check message
- Date: Sat, 23 Feb 2013 13:43:22 +0000 (UTC)
commit db3184d046a75b1447ea4d628838fe9ded3217af
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date: Sat Feb 23 08:37:34 2013 -0500
Use an idle callback to check message
* libbalsa/mailbox.c (lbm_msgno_filt_check),
(libbalsa_mailbox_msgno_filt_check): use an idle callback to
check whether to filter a message in or out.
ChangeLog | 6 +++++
libbalsa/mailbox.c | 56 +++++++++++++++++++++++++++++++++++++++-------------
2 files changed, 48 insertions(+), 14 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 8bdaa56..a033d28 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-02-23 Peter Bloomfield
+
+ * libbalsa/mailbox.c (lbm_msgno_filt_check),
+ (libbalsa_mailbox_msgno_filt_check): use an idle callback to
+ check whether to filter a message in or out.
+
2013-02-21 Peter Bloomfield
* libbalsa/mailbox.c (libbalsa_mailbox_finalize),
diff --git a/libbalsa/mailbox.c b/libbalsa/mailbox.c
index af1193e..724198a 100644
--- a/libbalsa/mailbox.c
+++ b/libbalsa/mailbox.c
@@ -1572,22 +1572,24 @@ libbalsa_mailbox_msgno_filt_out(LibBalsaMailbox * mailbox, GNode * node)
* messages;
* - if it isn't in the view and it matches the condition, filter it in.
*/
-void
-libbalsa_mailbox_msgno_filt_check(LibBalsaMailbox * mailbox, guint seqno,
- LibBalsaMailboxSearchIter * search_iter,
- gboolean hold_selected)
-{
- gboolean match;
- GNode *node;
- g_return_if_fail(LIBBALSA_IS_MAILBOX(mailbox));
+typedef struct {
+ LibBalsaMailbox *mailbox;
+ guint seqno;
+ LibBalsaMailboxSearchIter *search_iter;
+ gboolean hold_selected;
+} LibBalsaMailboxMsgnoFiltCheckInfo;
- gdk_threads_enter();
+static gboolean
+lbm_msgno_filt_check(LibBalsaMailboxMsgnoFiltCheckInfo * info)
- if (!mailbox->msg_tree) {
- gdk_threads_leave();
- return;
- }
+{
+ LibBalsaMailbox *mailbox = info->mailbox;
+ guint seqno = info->seqno;
+ LibBalsaMailboxSearchIter *search_iter = info->search_iter;
+ gboolean hold_selected = info->hold_selected;
+ gboolean match;
+ GNode *node;
match = search_iter ?
libbalsa_mailbox_message_match(mailbox, seqno, search_iter) : TRUE;
@@ -1617,7 +1619,33 @@ libbalsa_mailbox_msgno_filt_check(LibBalsaMailbox * mailbox, guint seqno,
libbalsa_mailbox_msgno_filt_in(mailbox, seqno);
}
- gdk_threads_leave();
+ g_object_unref(mailbox);
+ libbalsa_mailbox_search_iter_unref(search_iter);
+ g_free(info);
+
+ return FALSE;
+}
+
+void
+libbalsa_mailbox_msgno_filt_check(LibBalsaMailbox * mailbox, guint seqno,
+ LibBalsaMailboxSearchIter * search_iter,
+ gboolean hold_selected)
+{
+ LibBalsaMailboxMsgnoFiltCheckInfo *info;
+
+ g_return_if_fail(LIBBALSA_IS_MAILBOX(mailbox));
+
+ if (!mailbox->msg_tree) {
+ return;
+ }
+
+ info = g_new(LibBalsaMailboxMsgnoFiltCheckInfo, 1);
+ info->mailbox = g_object_ref(mailbox);
+ info->seqno = seqno;
+ info->search_iter = libbalsa_mailbox_search_iter_ref(search_iter);
+ info->hold_selected = hold_selected;
+
+ g_idle_add((GSourceFunc) lbm_msgno_filt_check, info);
}
/* Search iters */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]