aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/ebook
diff options
context:
space:
mode:
authorJP Rosevear <jpr@ximian.com>2003-05-15 02:44:27 +0800
committerJP Rosevear <jpr@src.gnome.org>2003-05-15 02:44:27 +0800
commit0203f5de7608f34c6510948b36f522c4c3a87fef (patch)
treead2cb3601cc04bff1993794236b3410b4d3d2040 /addressbook/backend/ebook
parentd49d8a2f15034c24cc67ac3922570d95643c39a5 (diff)
downloadgsoc2013-evolution-0203f5de7608f34c6510948b36f522c4c3a87fef.tar.gz
gsoc2013-evolution-0203f5de7608f34c6510948b36f522c4c3a87fef.tar.zst
gsoc2013-evolution-0203f5de7608f34c6510948b36f522c4c3a87fef.zip
clear the view (book_open_cb): track the book in the view, don't unref the
2003-05-14 JP Rosevear <jpr@ximian.com> * gui/component/addressbook.c (addressbook_view_unref): clear the view (book_open_cb): track the book in the view, don't unref the book (set_prop): set the book (retrieve_shell_view_interface_from_control): get the shell view every time (set_folder_bar_label): release and unref the shell view * gui/component/addressbook-storage.h: add proto * gui/component/addressbook-storage.c (addressbook_storage_cleanup): unref the storage * gui/component/addressbook-component.c (owner_unset_cb): clean up storage * backend/ebook/e-book.c (e_book_load_uri): track the listener signal (e_book_dispose): unref the listener and disconnect the signal svn path=/trunk/; revision=21179
Diffstat (limited to 'addressbook/backend/ebook')
-rw-r--r--addressbook/backend/ebook/e-book.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/addressbook/backend/ebook/e-book.c b/addressbook/backend/ebook/e-book.c
index c20f0e7c5c..7cf33d09c0 100644
--- a/addressbook/backend/ebook/e-book.c
+++ b/addressbook/backend/ebook/e-book.c
@@ -57,6 +57,7 @@ struct _EBookPrivate {
gchar *uri;
+ gulong listener_signal;
gulong died_signal;
};
@@ -773,8 +774,8 @@ e_book_load_uri (EBook *book,
return;
}
- g_signal_connect (book->priv->listener, "responses_queued",
- G_CALLBACK (e_book_check_listener_queue), book);
+ book->priv->listener_signal = g_signal_connect (book->priv->listener, "responses_queued",
+ G_CALLBACK (e_book_check_listener_queue), book);
load_uri_data = g_new (EBookLoadURIData, 1);
load_uri_data->open_response = open_response;
@@ -1605,9 +1606,15 @@ e_book_dispose (GObject *object)
CORBA_exception_init (&ev);
}
}
-
+
CORBA_exception_free (&ev);
+ if (book->priv->listener) {
+ g_signal_handler_disconnect (book->priv->comp_listener, book->priv->listener_signal);
+ bonobo_object_unref (book->priv->listener);
+ book->priv->listener = NULL;
+ }
+
if (book->priv->comp_listener) {
g_signal_handler_disconnect (book->priv->comp_listener, book->priv->died_signal);
g_object_unref (book->priv->comp_listener);