[evolution-data-server] Bug 736655 (bnc) - Deadlocks when auto-completing address in email composer



commit 4c58e189aa71d87021c3294f7757e1b2d540cd33
Author: Chenthill Palanisamy <pchenthill novell com>
Date:   Thu Feb 23 14:06:08 2012 +0530

    Bug 736655 (bnc) - Deadlocks when auto-completing address in email composer

 addressbook/libedata-book/e-book-backend.c   |    5 ++---
 addressbook/libedata-book/e-data-book-view.c |    2 +-
 2 files changed, 3 insertions(+), 4 deletions(-)
---
diff --git a/addressbook/libedata-book/e-book-backend.c b/addressbook/libedata-book/e-book-backend.c
index 8e50bb5..4787c6f 100644
--- a/addressbook/libedata-book/e-book-backend.c
+++ b/addressbook/libedata-book/e-book-backend.c
@@ -712,6 +712,7 @@ e_book_backend_add_book_view (EBookBackend *backend,
 
 	g_mutex_lock (backend->priv->views_mutex);
 
+	e_data_book_view_ref (view);
 	backend->priv->views = g_slist_append (backend->priv->views, view);
 
 	g_mutex_unlock (backend->priv->views_mutex);
@@ -733,6 +734,7 @@ e_book_backend_remove_book_view (EBookBackend *backend,
 	g_mutex_lock (backend->priv->views_mutex);
 
 	backend->priv->views = g_slist_remove (backend->priv->views, view);
+	e_data_book_view_unref (view);
 
 	g_mutex_unlock (backend->priv->views_mutex);
 }
@@ -824,10 +826,7 @@ e_book_backend_foreach_view (EBookBackend *backend,
 
 	for (views = backend->priv->views; views && !stop; views = views->next) {
 		view = E_DATA_BOOK_VIEW (views->data);
-
-		e_data_book_view_ref (view);
 		stop = !callback (view, user_data);
-		e_data_book_view_unref (view);
 	}
 
 	g_mutex_unlock (backend->priv->views_mutex);
diff --git a/addressbook/libedata-book/e-data-book-view.c b/addressbook/libedata-book/e-data-book-view.c
index ccbdb94..900015a 100644
--- a/addressbook/libedata-book/e-data-book-view.c
+++ b/addressbook/libedata-book/e-data-book-view.c
@@ -715,6 +715,7 @@ impl_DataBookView_dispose (EGdbusBookView *object,
 
 	e_book_backend_stop_book_view (book_view->priv->backend, book_view);
 	book_view->priv->running = FALSE;
+	e_book_backend_remove_book_view (book_view->priv->backend, book_view);
 
 	g_object_unref (book_view);
 
@@ -780,7 +781,6 @@ e_data_book_view_dispose (GObject *object)
 	}
 
 	if (priv->backend) {
-		e_book_backend_remove_book_view (priv->backend, book_view);
 		g_object_unref (priv->backend);
 		priv->backend = NULL;
 	}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]