diff options
author | Not Zed <NotZed@Ximian.com> | 2002-12-03 12:24:47 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2002-12-03 12:24:47 +0800 |
commit | 58b68db327f2f02c251ef5b9c41f7623a3bf417f (patch) | |
tree | 5d1867c5731352331cce8b871febad3c0a0a1600 /mail/folder-browser.c | |
parent | d16c201e161dee6c1919ffd2cd6eafe060825fd1 (diff) | |
download | gsoc2013-evolution-58b68db327f2f02c251ef5b9c41f7623a3bf417f.tar.gz gsoc2013-evolution-58b68db327f2f02c251ef5b9c41f7623a3bf417f.tar.zst gsoc2013-evolution-58b68db327f2f02c251ef5b9c41f7623a3bf417f.zip |
frobbed around with these till it exits without crashing.
2002-12-03 Not Zed <NotZed@Ximian.com>
* folder-browser.c (folder_browser_finalise/destroy): frobbed
around with these till it exits without crashing.
* message-list.c (message_list_destroy): made a destroy
handler again (was dispose). Frobbed around with this and
finalise till it can destroy without crashing.
* message-browser.c (message_browser_new): ref/sink the
folderbrowser.
svn path=/trunk/; revision=18991
Diffstat (limited to 'mail/folder-browser.c')
-rw-r--r-- | mail/folder-browser.c | 92 |
1 files changed, 51 insertions, 41 deletions
diff --git a/mail/folder-browser.c b/mail/folder-browser.c index 093ede8288..7bb1ca2ccc 100644 --- a/mail/folder-browser.c +++ b/mail/folder-browser.c @@ -130,54 +130,17 @@ static void folder_browser_finalise (GObject *object) { FolderBrowser *folder_browser; - CORBA_Environment ev; folder_browser = FOLDER_BROWSER (object); - - CORBA_exception_init (&ev); - + g_free (folder_browser->loading_uid); g_free (folder_browser->pending_uid); g_free (folder_browser->new_uid); g_free (folder_browser->loaded_uid); - if (folder_browser->search_full) - g_object_unref (folder_browser->search_full); - - if (folder_browser->sensitize_timeout_id) - g_source_remove (folder_browser->sensitize_timeout_id); - - if (folder_browser->shell != CORBA_OBJECT_NIL) { - CORBA_Object_release (folder_browser->shell, &ev); - folder_browser->shell = CORBA_OBJECT_NIL; - } - - if (folder_browser->shell_view != CORBA_OBJECT_NIL) { - CORBA_Object_release (folder_browser->shell_view, &ev); - folder_browser->shell_view = CORBA_OBJECT_NIL; - } - - if (folder_browser->uicomp) - bonobo_object_unref (BONOBO_OBJECT (folder_browser->uicomp)); - g_free (folder_browser->uri); folder_browser->uri = NULL; - - CORBA_exception_free (&ev); - - if (folder_browser->view_instance) { - g_object_unref (folder_browser->view_instance); - folder_browser->view_instance = NULL; - } - - if (folder_browser->view_menus) { - g_object_unref (folder_browser->view_menus); - folder_browser->view_menus = NULL; - } - - g_object_unref (folder_browser->invisible); - folder_browser->invisible = NULL; - + if (folder_browser->clipboard_selection) g_byte_array_free (folder_browser->clipboard_selection, TRUE); @@ -193,9 +156,12 @@ static void folder_browser_destroy (GtkObject *object) { FolderBrowser *folder_browser; + CORBA_Environment ev; folder_browser = FOLDER_BROWSER (object); - + + CORBA_exception_init (&ev); + if (folder_browser->seen_id != 0) { gtk_timeout_remove (folder_browser->seen_id); folder_browser->seen_id = 0; @@ -215,10 +181,50 @@ folder_browser_destroy (GtkObject *object) gtk_widget_destroy (GTK_WIDGET (folder_browser->mail_display)); folder_browser->mail_display = NULL; } + + if (folder_browser->view_instance) { + g_object_unref (folder_browser->view_instance); + folder_browser->view_instance = NULL; + } + + if (folder_browser->view_menus) { + g_object_unref (folder_browser->view_menus); + folder_browser->view_menus = NULL; + } /* wait for all outstanding async events against us */ mail_async_event_destroy (folder_browser->async_event); + + if (folder_browser->search_full) { + g_object_unref (folder_browser->search_full); + folder_browser->search_full = NULL; + } + + if (folder_browser->sensitize_timeout_id) { + g_source_remove (folder_browser->sensitize_timeout_id); + folder_browser->sensitize_timeout_id = 0; + } + if (folder_browser->shell != CORBA_OBJECT_NIL) { + CORBA_Object_release (folder_browser->shell, &ev); + folder_browser->shell = CORBA_OBJECT_NIL; + } + + if (folder_browser->shell_view != CORBA_OBJECT_NIL) { + CORBA_Object_release (folder_browser->shell_view, &ev); + folder_browser->shell_view = CORBA_OBJECT_NIL; + } + + if (folder_browser->uicomp) { + bonobo_object_unref (BONOBO_OBJECT (folder_browser->uicomp)); + folder_browser->uicomp = NULL; + } + + if (folder_browser->invisible) { + g_object_unref (folder_browser->invisible); + folder_browser->invisible = NULL; + } + if (folder_browser->get_id != -1) { mail_msg_cancel (folder_browser->get_id); folder_browser->get_id = -1; @@ -233,6 +239,8 @@ folder_browser_destroy (GtkObject *object) camel_object_unref (folder_browser->folder); folder_browser->folder = NULL; } + + CORBA_exception_free (&ev); GTK_OBJECT_CLASS (parent_class)->destroy (object); } @@ -2545,7 +2553,9 @@ my_folder_browser_init (FolderBrowser *fb) /* cut, copy & paste */ fb->invisible = gtk_invisible_new (); - + g_object_ref(fb->invisible); + gtk_object_sink(fb->invisible); + for (i = 0; i < num_paste_types; i++) gtk_selection_add_target (fb->invisible, clipboard_atom, paste_types[i].target, |