From 1d80d46ed53ac4fd6b292c972529b7c6d3bd0597 Mon Sep 17 00:00:00 2001 From: Not Zed Date: Mon, 26 Mar 2001 23:10:40 +0000 Subject: Added folder_created event here. 2001-03-27 Not Zed * camel-vee-store.c (vee_get_folder): Added folder_created event here. * camel-vee-folder.c (unmatched_finalise): Removed, moved into main finalise code. (message_changed): Just create a new change entry and promote it to a folder_changed thing. (vee_sync): Always rebuild folder on sync, even when not expunge. (folder_changed): If not autoupdating, make sure we remove any removed entries. (vee_folder_build_folder): (vee_folder_remove_folder): NOP if we're called on folder_unmatched. (vee_search_by_expression): Only search each folder once. Should we also order the result in summary order? 2001-03-20 Not Zed * camel-store.c (init_trash): Fix calling for vee_folder_new(). * camel-folder-summary.c (camel_folder_summary_remove_index): Optimise slightly, use ptr_array_remove_index rather than have to search for the index by using summary_remove. * camel-vee-folder.h: Removed local member from VeeFolder, since it was never used. * camel-vee-store.c (camel_vee_store_finalise): Setup finalise function. * camel-vee-folder.c (camel_vee_folder_set_expression): New function to set the query of an existing vfolder. (camel_vee_folder_construct): New function for convenience/subclasses. (camel_vee_folder_new): Removed exception parameter, no longer needed (since we dont search yet). (camel_vee_folder_new): Changed to use folder_construct, and no longer raise the folder created signal. (vee_folder_build_folder): Make it return error on exception, so we can work without exceptions. (vee_folder_remove_folder): Use remove index rather than remove_uid, this is ok since we have the summary locked for our own access. (camel_vee_folder_add_folder): Only add the folder to the unmatched private if it is not a private folder. (camel_vee_folder_remove_folder): Only remove the folder from unmatched if it is not private. (vee_expunge): Just call sync with expunge set. (vee_sync): If expunging, also refresh the search. (vee_folder_build_folder): We do our own locking now, removed from callers, also trigger changed events here too (within locks), fixed callers appropriately. (vee_folder_remove_folder): Do our own locking, and trigger changed events. (vee_folder_add_info): Renamed of vee_folder_add, we now take a hash of the folder name, rather than use the folders address. (hash_folder): Convert a folder name into an 8 character hash. (vee_get_message, vee_search_by_expression, vee_set_message_flags, vee_set_message_user_flag, vee_move_message_to): Changed the uid to be an 8 byte hash + original uid, with no ':' anymore. svn path=/trunk/; revision=8957 --- camel/camel-folder-summary.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'camel/camel-folder-summary.c') diff --git a/camel/camel-folder-summary.c b/camel/camel-folder-summary.c index 9aaa61e50c..8a21b8f93f 100644 --- a/camel/camel-folder-summary.c +++ b/camel/camel-folder-summary.c @@ -1045,19 +1045,18 @@ void camel_folder_summary_remove_uid(CamelFolderSummary *s, const char *uid) **/ void camel_folder_summary_remove_index(CamelFolderSummary *s, int index) { - CAMEL_SUMMARY_LOCK(s, ref_lock); CAMEL_SUMMARY_LOCK(s, summary_lock); if (index < s->messages->len) { CamelMessageInfo *info = s->messages->pdata[index]; - /* make sure it doesn't vanish while we're not looking */ - info->refcount++; + + g_hash_table_remove(s->messages_uid, camel_message_info_uid(info)); + g_ptr_array_remove_index(s->messages, index); + s->flags |= CAMEL_SUMMARY_DIRTY; + CAMEL_SUMMARY_UNLOCK(s, summary_lock); - CAMEL_SUMMARY_UNLOCK(s, ref_lock); - camel_folder_summary_remove(s, info); camel_folder_summary_info_free(s, info); } else { CAMEL_SUMMARY_UNLOCK(s, summary_lock); - CAMEL_SUMMARY_UNLOCK(s, ref_lock); } } -- cgit v1.2.3