aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addressbook/ChangeLog15
-rw-r--r--addressbook/backend/ebook/e-book-listener.c11
2 files changed, 15 insertions, 11 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index 9d3bed3211..04ae3a90f1 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,18 @@
+2001-07-24 Dan Winship <danw@ximian.com>
+
+ * backend/ebook/e-book-listener.c (e_book_listener_stop): Don't
+ stop the idle_queue and unref from here, since this might be
+ called from inside e_book_listener_check_queue, and we don't want
+ to return to that function with the listener having been
+ destroyed.
+ (e_book_listener_check_queue): Don't exit early if the queue is
+ stopped. Proceed through the check if the queue is NULL (which is
+ must be if the queue is stopped), and then reach the existing code
+ to remove the idle handler. Combined with the above, this fixes
+ ximian #4485 (again). This is not a plot to boost my
+ showstopper-bugfixing count by fixing the same bug over and over
+ again.
+
2001-07-23 Dan Winship <danw@ximian.com>
Re-fix for my 07-18 not-quite-fix.
diff --git a/addressbook/backend/ebook/e-book-listener.c b/addressbook/backend/ebook/e-book-listener.c
index 87ea5f874f..285c6646b2 100644
--- a/addressbook/backend/ebook/e-book-listener.c
+++ b/addressbook/backend/ebook/e-book-listener.c
@@ -35,11 +35,6 @@ struct _EBookListenerPrivate {
static gboolean
e_book_listener_check_queue (EBookListener *listener)
{
- if (listener->priv->stopped) {
- listener->priv->idle_id = 0;
- return FALSE;
- }
-
if (listener->priv->response_queue != NULL) {
gtk_signal_emit (GTK_OBJECT (listener),
e_book_listener_signals [RESPONSES_QUEUED]);
@@ -678,12 +673,6 @@ e_book_listener_stop (EBookListener *listener)
g_list_free (listener->priv->response_queue);
listener->priv->response_queue = NULL;
- if (listener->priv->idle_id) {
- g_source_remove (listener->priv->idle_id);
- listener->priv->idle_id = 0;
- bonobo_object_unref (BONOBO_OBJECT (listener));
- }
-
listener->priv->stopped = TRUE;
}