aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-local.c
diff options
context:
space:
mode:
authorJP Rosevear <jpr@ximian.com>2001-05-12 03:57:15 +0800
committerJP Rosevear <jpr@src.gnome.org>2001-05-12 03:57:15 +0800
commite3efaa319aabdfe6b3329fae1b9cee8a0ea877f3 (patch)
tree74dbe6e0a3ac5c9e6559d9595f65de6cab8cb896 /mail/mail-local.c
parent6febeab3270c35664cc3938d4f89b9c292550040 (diff)
downloadgsoc2013-evolution-e3efaa319aabdfe6b3329fae1b9cee8a0ea877f3.tar.gz
gsoc2013-evolution-e3efaa319aabdfe6b3329fae1b9cee8a0ea877f3.tar.zst
gsoc2013-evolution-e3efaa319aabdfe6b3329fae1b9cee8a0ea877f3.zip
add proto
2001-05-11 JP Rosevear <jpr@ximian.com> * mail-importer.h: add proto * mail-importer.c (mail_importer_uninit): release and unref the local storage * mail-local.c (mail_local_store_finalize): use bonobo_object_release_unref rather than doing Bonobo_Unknow_unref and a corba release (register_folder_registered): "sink" the local_store ref to prevent circular ref (mail_local_storage_shutdown): unref the local store * mail-local.h: new proto * component-factory.c (owner_unset_cb): uninit the importer and shutdown the local storage svn path=/trunk/; revision=9768
Diffstat (limited to 'mail/mail-local.c')
-rw-r--r--mail/mail-local.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/mail/mail-local.c b/mail/mail-local.c
index 5c27fb0e0a..71c2c4919b 100644
--- a/mail/mail-local.c
+++ b/mail/mail-local.c
@@ -285,10 +285,8 @@ mail_local_store_finalize (gpointer object)
CORBA_Environment ev;
CORBA_exception_init (&ev);
- if (!CORBA_Object_is_nil (local_store->corba_local_storage, &ev)) {
- Bonobo_Unknown_unref (local_store->corba_local_storage, &ev);
- CORBA_Object_release (local_store->corba_local_storage, &ev);
- }
+ if (!CORBA_Object_is_nil (local_store->corba_local_storage, &ev))
+ bonobo_object_release_unref (local_store->corba_local_storage, &ev);
CORBA_exception_free (&ev);
if (local_store->local_storage_listener)
@@ -564,6 +562,8 @@ register_folder_registered(struct _mail_msg *mm)
if (local_folder->folder) {
g_hash_table_insert (local_folder->local_store->folders, local_folder->uri + 8,
local_folder);
+ /* Remove the circular ref once the local store knows aboutthe folder */
+ camel_object_unref ((CamelObject *)local_folder->local_store);
/* add the folder to the vfolder lists FIXME: merge stuff above with this */
vfolder_register_source(local_folder->folder);
@@ -732,6 +732,11 @@ mail_local_storage_startup (EvolutionShellClient *shellclient,
CORBA_exception_free (&ev);
}
+void
+mail_local_storage_shutdown (void)
+{
+ camel_object_unref (CAMEL_OBJECT (local_store));
+}
/* Local folder reconfiguration stuff */