diff options
author | Jeffrey Stedfast <fejj@helixcode.com> | 2000-09-12 04:56:47 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2000-09-12 04:56:47 +0800 |
commit | e98f2565b3933b735c82753cd6d579d74de639df (patch) | |
tree | 5c63c945cf788d1bc2ba28a736c0111eb6e46b65 /filter/filter-driver.c | |
parent | 8959d0d50a5c8441d74e61b62dda2cccfd13aa98 (diff) | |
download | gsoc2013-evolution-e98f2565b3933b735c82753cd6d579d74de639df.tar.gz gsoc2013-evolution-e98f2565b3933b735c82753cd6d579d74de639df.tar.zst gsoc2013-evolution-e98f2565b3933b735c82753cd6d579d74de639df.zip |
Don't freeze/thaw the default inbox here, let the caller freeze/thaw it.
2000-09-11 Jeffrey Stedfast <fejj@helixcode.com>
* filter-driver.c (filter_driver_run): Don't freeze/thaw the
default inbox here, let the caller freeze/thaw it. Don't destroy
the folders hash table here, it's faster if we wait till the
filter-driver is destroyed.
(filter_driver_finalise): Destroy the folders hash table here
(filter_driver_init): Initialize the folders hash table here
svn path=/trunk/; revision=5346
Diffstat (limited to 'filter/filter-driver.c')
-rw-r--r-- | filter/filter-driver.c | 33 |
1 files changed, 11 insertions, 22 deletions
diff --git a/filter/filter-driver.c b/filter/filter-driver.c index e82c884f6e..257869081d 100644 --- a/filter/filter-driver.c +++ b/filter/filter-driver.c @@ -158,6 +158,8 @@ filter_driver_init (FilterDriver *obj) p->globals = g_hash_table_new (g_str_hash, g_str_equal); + p->folders = g_hash_table_new (g_str_hash, g_str_equal); + /* Will get set in filter_driver_run */ p->ex = NULL; } @@ -172,10 +174,14 @@ free_hash_strings (void *key, void *value, void *data) static void filter_driver_finalise (GtkObject *obj) { - FilterDriver *d = (FilterDriver *) obj; - struct _FilterDriverPrivate *p = _PRIVATE (d); + FilterDriver *driver = (FilterDriver *) obj; + struct _FilterDriverPrivate *p = _PRIVATE (driver); + + /* close all folders that were opened for appending */ + close_folders (driver); + g_hash_table_destroy (p->folders); - g_hash_table_foreach (p->globals, free_hash_strings, d); + g_hash_table_foreach (p->globals, free_hash_strings, driver); g_hash_table_destroy (p->globals); gtk_object_unref (GTK_OBJECT (p->eval)); @@ -358,8 +364,7 @@ open_folder (FilterDriver *driver, const char *folder_url) static void close_folder (void *key, void *value, void *data) -{ - +{ CamelFolder *folder = value; FilterDriver *driver = data; struct _FilterDriverPrivate *p = _PRIVATE (driver); @@ -368,8 +373,8 @@ close_folder (void *key, void *value, void *data) mail_tool_camel_lock_up (); camel_folder_sync (folder, FALSE, p->ex); camel_folder_thaw (folder); - mail_tool_camel_lock_down (); camel_object_unref (CAMEL_OBJECT (folder)); + mail_tool_camel_lock_down (); } /* flush/close all folders */ @@ -416,13 +421,6 @@ filter_driver_run (FilterDriver *driver, CamelMimeMessage *message, CamelMessage p->message = message; p->info = info; - /* setup runtime data */ - p->folders = g_hash_table_new (g_str_hash, g_str_equal); - - mail_tool_camel_lock_up (); - camel_folder_freeze (inbox); - mail_tool_camel_lock_down (); - fsearch = g_string_new (""); faction = g_string_new (""); @@ -477,15 +475,6 @@ filter_driver_run (FilterDriver *driver, CamelMimeMessage *message, CamelMessage filtered = TRUE; } - /* close all folders that were opened for appending */ - close_folders (driver); - g_hash_table_destroy (p->folders); - - /* thaw the inbox folder */ - mail_tool_camel_lock_up (); - camel_folder_thaw (inbox); - mail_tool_camel_lock_down (); - /* transfer the exception over to the parents exception */ if (camel_exception_is_set (p->ex)) camel_exception_xfer (ex, p->ex); |