aboutsummaryrefslogtreecommitdiff
path: root/src/query_search.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2009-11-04 04:52:18 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2009-11-04 04:52:18 +0000
commitb7c1d2f196fc3557202e41a4abfe117910947400 (patch)
tree0e0fed153e6db63792205e6f269421180c2e1512 /src/query_search.c
parent4d5df10a3e521bbb3918d5844e8521af901b6fdf (diff)
fixed a bug that prohibited query search on IMAP folders. Don't call gtk_main_iteration() from non-main threads.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2330 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/query_search.c')
-rw-r--r--src/query_search.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/query_search.c b/src/query_search.c
index ff6a31ef..5261b49e 100644
--- a/src/query_search.c
+++ b/src/query_search.c
@@ -571,6 +571,7 @@ typedef struct _QueryData
gint total;
gint flag;
GTimeVal tv_prev;
+ GSList *mlist;
#if USE_THREADS
GAsyncQueue *queue;
guint timer_tag;
@@ -622,8 +623,7 @@ static gpointer query_search_folder_func(gpointer data)
g_async_queue_ref(qdata->queue);
#endif
- mlist = folder_item_get_msg_list(qdata->item, TRUE);
- qdata->total = g_slist_length(mlist);
+ mlist = qdata->mlist;
memset(&fltinfo, 0, sizeof(FilterInfo));
@@ -680,7 +680,6 @@ static gpointer query_search_folder_func(gpointer data)
procheader_header_list_destroy(hlist);
}
- procmsg_msg_list_free(mlist);
#if USE_THREADS
g_async_queue_unref(qdata->queue);
#endif
@@ -724,6 +723,9 @@ static void query_search_folder(FolderItem *item)
procmsg_set_auto_decrypt_message(FALSE);
+ data.mlist = folder_item_get_msg_list(item, TRUE);
+ data.total = g_slist_length(data.mlist);
+
#if USE_THREADS
data.queue = g_async_queue_new();
data.timer_tag = g_timeout_add(PROGRESS_UPDATE_INTERVAL,
@@ -733,6 +735,7 @@ static void query_search_folder(FolderItem *item)
debug_print("query_search_folder: thread started\n");
while (g_atomic_int_get(&data.flag) == 0)
gtk_main_iteration();
+ log_window_flush();
while ((msginfo = g_async_queue_try_pop(data.queue)))
query_search_append_msg(msginfo);
@@ -746,6 +749,7 @@ static void query_search_folder(FolderItem *item)
query_search_folder_func(&data);
#endif
+ procmsg_msg_list_free(data.mlist);
procmsg_set_auto_decrypt_message(TRUE);
g_free(data.folder_name);
}