Matthew Barnes 8edc3a
--- evolution-data-server-1.11.2/addressbook/backends/file/e-book-backend-file.c.e-flag	2007-05-13 13:39:43.000000000 -0400
Matthew Barnes 8edc3a
+++ evolution-data-server-1.11.2/addressbook/backends/file/e-book-backend-file.c	2007-05-18 11:13:41.000000000 -0400
Matthew Barnes ab6285
@@ -43,6 +43,7 @@
Matthew Barnes ab6285
 #include "libedataserver/e-dbhash.h"
Matthew Barnes ab6285
 #include "libedataserver/e-db3-utils.h"
Matthew Barnes ab6285
 #include "libedataserver/e-data-server-util.h"
Matthew Barnes ab6285
+#include "libedataserver/e-flag.h"
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 #include "libebook/e-contact.h"
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
@@ -497,18 +498,15 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 typedef struct {
Matthew Barnes ab6285
 	EBookBackendFile *bf;
Matthew Barnes ab6285
-	GMutex *mutex;
Matthew Barnes ab6285
-	GCond *cond;
Matthew Barnes ab6285
 	GThread *thread;
Matthew Barnes ab6285
-	gboolean stopped;
Matthew Barnes ab6285
+	EFlag *running;
Matthew Barnes ab6285
 } FileBackendSearchClosure;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes ab6285
 closure_destroy (FileBackendSearchClosure *closure)
Matthew Barnes ab6285
 {
Matthew Barnes ab6285
 	d(printf ("destroying search closure\n"));
Matthew Barnes ab6285
-	g_mutex_free (closure->mutex);
Matthew Barnes ab6285
-	g_cond_free (closure->cond);
Matthew Barnes ab6285
+	e_flag_free (closure->running);
Matthew Barnes ab6285
 	g_free (closure);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
@@ -518,10 +516,8 @@
Matthew Barnes ab6285
 	FileBackendSearchClosure *closure = g_new (FileBackendSearchClosure, 1);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	closure->bf = bf;
Matthew Barnes ab6285
-	closure->mutex = g_mutex_new ();
Matthew Barnes ab6285
-	closure->cond = g_cond_new ();
Matthew Barnes ab6285
 	closure->thread = NULL;
Matthew Barnes ab6285
-	closure->stopped = FALSE;
Matthew Barnes ab6285
+	closure->running = e_flag_new ();
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	g_object_set_data_full (G_OBJECT (book_view), "EBookBackendFile.BookView::closure",
Matthew Barnes ab6285
 				closure, (GDestroyNotify)closure_destroy);
Matthew Barnes 8edc3a
@@ -545,7 +541,7 @@
Matthew Barnes ab6285
 	DB  *db;
Matthew Barnes ab6285
 	DBT id_dbt, vcard_dbt;
Matthew Barnes ab6285
 	int db_error;
Matthew Barnes ab6285
-	gboolean stopped = FALSE, allcontacts;
Matthew Barnes ab6285
+	gboolean allcontacts;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	d(printf ("starting initial population of book view\n"));
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
@@ -565,9 +561,7 @@
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	d(printf ("signalling parent thread\n"));
Matthew Barnes ab6285
-	g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
-	g_cond_signal (closure->cond);
Matthew Barnes ab6285
-	g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
+	e_flag_set (closure->running);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	if (e_book_backend_summary_is_summary_query (bf->priv->summary, query)) {
Matthew Barnes ab6285
 		/* do a summary query */
Matthew Barnes 8edc3a
@@ -576,11 +570,8 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		for (i = 0; i < ids->len; i ++) {
Matthew Barnes ab6285
 			char *id = g_ptr_array_index (ids, i);
Matthew Barnes ab6285
-			g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
-			stopped = closure->stopped;
Matthew Barnes ab6285
-			g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-			if (stopped)
Matthew Barnes ab6285
+			if (!e_flag_is_set (closure->running))
Matthew Barnes ab6285
 				break;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 			string_to_dbt (id, &id_dbt);
Matthew Barnes 8edc3a
@@ -613,11 +604,7 @@
Matthew Barnes ab6285
 			db_error = dbc->c_get(dbc, &id_dbt, &vcard_dbt, DB_FIRST);
Matthew Barnes ab6285
 			while (db_error == 0) {
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-				g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
-				stopped = closure->stopped;
Matthew Barnes ab6285
-				g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-				if (stopped)
Matthew Barnes ab6285
+				if (!e_flag_is_set (closure->running))
Matthew Barnes ab6285
 					break;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 				/* don't include the version in the list of cards */
Matthew Barnes 8edc3a
@@ -647,7 +634,7 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	if (!stopped)
Matthew Barnes ab6285
+	if (e_flag_is_set (closure->running))
Matthew Barnes ab6285
 		e_data_book_view_notify_complete (book_view, GNOME_Evolution_Addressbook_Success);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	/* unref the */
Matthew Barnes 8edc3a
@@ -665,15 +652,12 @@
Matthew Barnes ab6285
 {
Matthew Barnes ab6285
 	FileBackendSearchClosure *closure = init_closure (book_view, E_BOOK_BACKEND_FILE (backend));
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	d(printf ("starting book view thread\n"));
Matthew Barnes ab6285
 	closure->thread = g_thread_create (book_view_thread, book_view, TRUE, NULL);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_wait (closure->cond, closure->mutex);
Matthew Barnes ab6285
+	e_flag_wait (closure->running);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	/* at this point we know the book view thread is actually running */
Matthew Barnes ab6285
-	g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
 	d(printf ("returning from start_book_view\n"));
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
@@ -682,14 +666,11 @@
Matthew Barnes ab6285
 				    EDataBookView *book_view)
Matthew Barnes ab6285
 {
Matthew Barnes ab6285
 	FileBackendSearchClosure *closure = get_closure (book_view);
Matthew Barnes ab6285
-	gboolean need_join = FALSE;
Matthew Barnes ab6285
+	gboolean need_join;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	d(printf ("stopping query\n"));
Matthew Barnes ab6285
-	g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
-	if (!closure->stopped)
Matthew Barnes ab6285
-		need_join = TRUE;
Matthew Barnes ab6285
-	closure->stopped = TRUE;
Matthew Barnes ab6285
-	g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
+	need_join = e_flag_is_set (closure->running);
Matthew Barnes ab6285
+	e_flag_clear (closure->running);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	if (need_join)
Matthew Barnes ab6285
 		g_thread_join (closure->thread);
Matthew Barnes 8edc3a
--- evolution-data-server-1.11.2/addressbook/backends/groupwise/e-book-backend-groupwise.c.e-flag	2007-04-18 06:10:20.000000000 -0400
Matthew Barnes 8edc3a
+++ evolution-data-server-1.11.2/addressbook/backends/groupwise/e-book-backend-groupwise.c	2007-05-18 11:15:53.000000000 -0400
Matthew Barnes ab6285
@@ -40,6 +40,7 @@
Matthew Barnes ab6285
 #include "libedataserver/e-sexp.h"
Matthew Barnes ab6285
 #include "libedataserver/e-data-server-util.h"
Matthew Barnes ab6285
 #include "libedataserver/e-db3-utils.h"
Matthew Barnes ab6285
+#include "libedataserver/e-flag.h"
Matthew Barnes ab6285
 #include "libedataserver/e-url.h" 
Matthew Barnes ab6285
 #include "libebook/e-contact.h"
Matthew Barnes ab6285
 #include "libedata-book/e-book-backend-sexp.h"
Matthew Barnes 8edc3a
@@ -2071,17 +2072,14 @@
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 typedef struct {
Matthew Barnes ab6285
 	EBookBackendGroupwise *bg;
Matthew Barnes ab6285
-	GMutex *mutex;
Matthew Barnes ab6285
-	GCond *cond;
Matthew Barnes ab6285
 	GThread *thread;
Matthew Barnes ab6285
-	gboolean stopped;
Matthew Barnes ab6285
+	EFlag *running;
Matthew Barnes ab6285
 } GroupwiseBackendSearchClosure;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes ab6285
 closure_destroy (GroupwiseBackendSearchClosure *closure)
Matthew Barnes ab6285
 {
Matthew Barnes ab6285
-	g_mutex_free (closure->mutex);
Matthew Barnes ab6285
-	g_cond_free (closure->cond);
Matthew Barnes ab6285
+	e_flag_free (closure->running);
Matthew Barnes ab6285
 	g_free (closure);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
@@ -2091,10 +2089,8 @@
Matthew Barnes ab6285
 	GroupwiseBackendSearchClosure *closure = g_new (GroupwiseBackendSearchClosure, 1);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	closure->bg = bg;
Matthew Barnes ab6285
-	closure->mutex = g_mutex_new ();
Matthew Barnes ab6285
-	closure->cond = g_cond_new ();
Matthew Barnes ab6285
 	closure->thread = NULL;
Matthew Barnes ab6285
-	closure->stopped = FALSE;
Matthew Barnes ab6285
+	closure->running = e_flag_new ();
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	g_object_set_data_full (G_OBJECT (book_view), "EBookBackendGroupwise.BookView::closure",
Matthew Barnes ab6285
 				closure, (GDestroyNotify)closure_destroy);
Matthew Barnes 8edc3a
@@ -2116,7 +2112,6 @@
Matthew Barnes ab6285
 			 GroupwiseBackendSearchClosure *closure)
Matthew Barnes ab6285
 {
Matthew Barnes ab6285
 	int i;
Matthew Barnes ab6285
-	gboolean stopped = FALSE;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	if (enable_debug)
Matthew Barnes ab6285
 		printf ("\nread contacts from cache for the ids found in summary\n");
Matthew Barnes 8edc3a
@@ -2124,12 +2119,8 @@
Matthew Barnes 8edc3a
 		char *uid;
Matthew Barnes 8edc3a
 		EContact *contact; 
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-		g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
-		stopped = closure->stopped;
Matthew Barnes ab6285
-		g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-		if (stopped)
Matthew Barnes ab6285
-			break;	
Matthew Barnes ab6285
+		if (!e_flag_is_set (closure->running))
Matthew Barnes ab6285
+			break;
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
  		uid = g_ptr_array_index (ids, i);
Matthew Barnes 8edc3a
 		contact = e_book_backend_db_cache_get_contact (ebgw->priv->file_db, uid);
Matthew Barnes 8edc3a
@@ -2138,7 +2129,7 @@
Matthew Barnes ab6285
 			g_object_unref (contact);
Matthew Barnes ab6285
 		}
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
-	if (!stopped)
Matthew Barnes ab6285
+	if (e_flag_is_set (closure->running))
Matthew Barnes ab6285
 		e_data_book_view_notify_complete (book_view, 
Matthew Barnes ab6285
 						  GNOME_Evolution_Addressbook_Success);
Matthew Barnes ab6285
 }
Matthew Barnes 8edc3a
@@ -2153,7 +2144,6 @@
Matthew Barnes ab6285
 	const char *query = NULL;
Matthew Barnes ab6285
 	EGwFilter *filter = NULL;
Matthew Barnes ab6285
 	GPtrArray *ids = NULL;
Matthew Barnes ab6285
-	gboolean stopped = FALSE;
Matthew Barnes ab6285
 	EDataBookView *book_view = data;
Matthew Barnes ab6285
 	GroupwiseBackendSearchClosure *closure = get_closure (book_view);
Matthew Barnes ab6285
 	char *view = NULL;
Matthew Barnes 8edc3a
@@ -2168,9 +2158,7 @@
Matthew Barnes ab6285
 	if (enable_debug)
Matthew Barnes ab6285
 		printf ("start book view for %s \n", gwb->priv->book_name);
Matthew Barnes ab6285
        	bonobo_object_ref (book_view);
Matthew Barnes ab6285
-	g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
-	g_cond_signal (closure->cond);
Matthew Barnes ab6285
-	g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
+	e_flag_set (closure->running);
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	query = e_data_book_view_get_card_query (book_view);
Matthew Barnes ab6285
 	if (enable_debug)
Matthew Barnes 8edc3a
@@ -2202,10 +2190,7 @@
Matthew Barnes ab6285
 		contacts = e_book_backend_db_cache_get_contacts (gwb->priv->file_db, query);
Matthew Barnes ab6285
 		temp_list = contacts;
Matthew Barnes ab6285
 		for (; contacts != NULL; contacts = g_list_next(contacts)) {
Matthew Barnes ab6285
-			g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
-			stopped = closure->stopped;
Matthew Barnes ab6285
-			g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
-			if (stopped) {
Matthew Barnes ab6285
+			if (!e_flag_is_set (closure->running)) {
Matthew Barnes ab6285
 				for (;contacts != NULL; contacts = g_list_next (contacts))
Matthew Barnes ab6285
 					g_object_unref (contacts->data);
Matthew Barnes ab6285
 				break;
Matthew Barnes 8edc3a
@@ -2213,7 +2198,7 @@
Matthew Barnes ab6285
 			e_data_book_view_notify_update (book_view, E_CONTACT(contacts->data));
Matthew Barnes ab6285
 			g_object_unref (contacts->data);
Matthew Barnes ab6285
 		}
Matthew Barnes ab6285
-		if (!stopped)
Matthew Barnes ab6285
+		if (e_flag_is_set (closure->running))
Matthew Barnes ab6285
 			e_data_book_view_notify_complete (book_view, GNOME_Evolution_Addressbook_Success);
Matthew Barnes ab6285
 		if (temp_list)
Matthew Barnes ab6285
 			g_list_free (temp_list);
Matthew Barnes 8edc3a
@@ -2341,10 +2326,7 @@
Matthew Barnes ab6285
 		temp_list = gw_items;
Matthew Barnes ab6285
 		for (; gw_items != NULL; gw_items = g_list_next(gw_items)) { 
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-			g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
-			stopped = closure->stopped;
Matthew Barnes ab6285
-			g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
-			if (stopped) {
Matthew Barnes ab6285
+			if (!e_flag_is_set (closure->running)) {
Matthew Barnes ab6285
 				for (;gw_items != NULL; gw_items = g_list_next (gw_items))
Matthew Barnes ab6285
 					g_object_unref (gw_items->data);
Matthew Barnes ab6285
 				break;
Matthew Barnes 8edc3a
@@ -2365,7 +2347,7 @@
Matthew Barnes ab6285
 		}
Matthew Barnes ab6285
 		if (temp_list)
Matthew Barnes ab6285
 			g_list_free (temp_list);
Matthew Barnes ab6285
-		if (!stopped)
Matthew Barnes ab6285
+		if (e_flag_is_set (closure->running))
Matthew Barnes ab6285
 			e_data_book_view_notify_complete (book_view, GNOME_Evolution_Addressbook_Success);
Matthew Barnes ab6285
 		if (filter)
Matthew Barnes ab6285
 			g_object_unref (filter);
Matthew Barnes 8edc3a
@@ -2394,12 +2376,10 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	if (enable_debug)
Matthew Barnes ab6285
 		printf ("\ne_book_backend_groupwise_start_book_view...\n");
Matthew Barnes ab6285
-	g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
 	closure->thread = g_thread_create (book_view_thread, book_view, FALSE, NULL);
Matthew Barnes ab6285
-	g_cond_wait (closure->cond, closure->mutex);
Matthew Barnes ab6285
+	e_flag_wait (closure->running);
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	/* at this point we know the book view thread is actually running */
Matthew Barnes ab6285
-	g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
   
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -2410,10 +2390,7 @@
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	if (enable_debug)
Matthew Barnes ab6285
 		printf ("\ne_book_backend_groupwise_stop_book_view...\n");
Matthew Barnes ab6285
-	g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
-	if (!closure->stopped)
Matthew Barnes ab6285
-		closure->stopped = TRUE;
Matthew Barnes ab6285
-	g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
+	e_flag_clear (closure->running);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -2655,11 +2632,8 @@
Matthew Barnes ab6285
 	if (book_view) {
Matthew Barnes ab6285
 		closure = get_closure (book_view);
Matthew Barnes ab6285
 		bonobo_object_ref (book_view);
Matthew Barnes ab6285
-		if (closure) {
Matthew Barnes ab6285
-			g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
-			g_cond_signal (closure->cond);
Matthew Barnes ab6285
-			g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
-		}
Matthew Barnes ab6285
+		if (closure)
Matthew Barnes ab6285
+			e_flag_set (closure->running);
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	while (!done) {
Matthew Barnes 8edc3a
@@ -2804,11 +2778,8 @@
Matthew Barnes ab6285
 	if (book_view) {
Matthew Barnes ab6285
 		closure = get_closure (book_view);
Matthew Barnes ab6285
 		bonobo_object_ref (book_view);
Matthew Barnes ab6285
-		if (closure) {
Matthew Barnes ab6285
-			g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
-			g_cond_signal (closure->cond);
Matthew Barnes ab6285
-			g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
-		}
Matthew Barnes ab6285
+		if (closure)
Matthew Barnes ab6285
+			e_flag_set (closure->running);
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	cache_file_name = e_book_backend_db_cache_get_filename(ebgw->priv->file_db);
Matthew Barnes 8edc3a
@@ -2974,11 +2945,8 @@
Matthew Barnes ab6285
 	if (book_view) {
Matthew Barnes ab6285
 		closure = get_closure (book_view);
Matthew Barnes ab6285
 		bonobo_object_ref (book_view);
Matthew Barnes ab6285
-		if (closure){
Matthew Barnes ab6285
-			g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
-			g_cond_signal (closure->cond);
Matthew Barnes ab6285
-			g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
-		}
Matthew Barnes ab6285
+		if (closure)
Matthew Barnes ab6285
+			e_flag_set (closure->running);
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	/* update the cache */
Matthew Barnes 8edc3a
--- evolution-data-server-1.11.2/addressbook/backends/vcf/e-book-backend-vcf.c.e-flag	2007-04-18 06:10:21.000000000 -0400
Matthew Barnes 8edc3a
+++ evolution-data-server-1.11.2/addressbook/backends/vcf/e-book-backend-vcf.c	2007-05-18 11:13:41.000000000 -0400
Matthew Barnes ab6285
@@ -41,6 +41,7 @@
Matthew Barnes ab6285
 #include <glib/gi18n-lib.h>
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 #include "libedataserver/e-data-server-util.h"
Matthew Barnes ab6285
+#include "libedataserver/e-flag.h"
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 #include "libebook/e-contact.h"
Matthew Barnes ab6285
  
Matthew Barnes ab6285
@@ -427,18 +428,15 @@
Matthew Barnes ab6285
 typedef struct {
Matthew Barnes ab6285
 	EBookBackendVCF *bvcf;
Matthew Barnes ab6285
 	EDataBookView *view;
Matthew Barnes ab6285
-	GMutex *mutex;
Matthew Barnes ab6285
-	GCond *cond;
Matthew Barnes ab6285
 	GThread *thread;
Matthew Barnes ab6285
-	gboolean stopped;
Matthew Barnes ab6285
+	EFlag *running;
Matthew Barnes ab6285
 } VCFBackendSearchClosure;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes ab6285
 closure_destroy (VCFBackendSearchClosure *closure)
Matthew Barnes ab6285
 {
Matthew Barnes ab6285
 	d(printf ("destroying search closure\n"));
Matthew Barnes ab6285
-	g_mutex_free (closure->mutex);
Matthew Barnes ab6285
-	g_cond_free (closure->cond);
Matthew Barnes ab6285
+	e_flag_free (closure->running);
Matthew Barnes ab6285
 	g_free (closure);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
@@ -449,10 +447,8 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	closure->bvcf = bvcf;
Matthew Barnes ab6285
 	closure->view = book_view;
Matthew Barnes ab6285
-	closure->mutex = g_mutex_new ();
Matthew Barnes ab6285
-	closure->cond = g_cond_new ();
Matthew Barnes ab6285
 	closure->thread = NULL;
Matthew Barnes ab6285
-	closure->stopped = FALSE;
Matthew Barnes ab6285
+	closure->running = e_flag_new ();
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	g_object_set_data_full (G_OBJECT (book_view), "EBookBackendVCF.BookView::closure",
Matthew Barnes ab6285
 				closure, (GDestroyNotify)closure_destroy);
Matthew Barnes ab6285
@@ -486,9 +482,7 @@
Matthew Barnes ab6285
 		e_data_book_view_notify_status_message (book_view, _("Searching..."));
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	d(printf ("signalling parent thread\n"));
Matthew Barnes ab6285
-	g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
-	g_cond_signal (closure->cond);
Matthew Barnes ab6285
-	g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
+	e_flag_set (closure->running);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	for (l = closure->bvcf->priv->contact_list; l; l = l->next) {
Matthew Barnes ab6285
 		char *vcard_string = l->data;
Matthew Barnes ab6285
@@ -496,11 +490,11 @@
Matthew Barnes ab6285
 		e_data_book_view_notify_update (closure->view, contact);
Matthew Barnes ab6285
 		g_object_unref (contact);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-		if (closure->stopped)
Matthew Barnes ab6285
+		if (!e_flag_is_set (closure->running))
Matthew Barnes ab6285
 			break;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	if (!closure->stopped)
Matthew Barnes ab6285
+	if (e_flag_is_set (closure->running))
Matthew Barnes ab6285
 		e_data_book_view_notify_complete (closure->view, GNOME_Evolution_Addressbook_Success);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	/* unref the book view */
Matthew Barnes ab6285
@@ -518,15 +512,12 @@
Matthew Barnes ab6285
 {
Matthew Barnes ab6285
 	VCFBackendSearchClosure *closure = init_closure (book_view, E_BOOK_BACKEND_VCF (backend));
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	d(printf ("starting book view thread\n"));
Matthew Barnes ab6285
 	closure->thread = g_thread_create (book_view_thread, book_view, TRUE, NULL);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_wait (closure->cond, closure->mutex);
Matthew Barnes ab6285
+	e_flag_wait (closure->running);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	/* at this point we know the book view thread is actually running */
Matthew Barnes ab6285
-	g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
 	d(printf ("returning from start_book_view\n"));
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
@@ -536,14 +527,11 @@
Matthew Barnes ab6285
 				   EDataBookView *book_view)
Matthew Barnes ab6285
 {
Matthew Barnes ab6285
 	VCFBackendSearchClosure *closure = get_closure (book_view);
Matthew Barnes ab6285
-	gboolean need_join = FALSE;
Matthew Barnes ab6285
+	gboolean need_join;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	d(printf ("stopping query\n"));
Matthew Barnes ab6285
-	g_mutex_lock (closure->mutex);
Matthew Barnes ab6285
-	if (!closure->stopped)
Matthew Barnes ab6285
-		need_join = TRUE;
Matthew Barnes ab6285
-	closure->stopped = TRUE;
Matthew Barnes ab6285
-	g_mutex_unlock (closure->mutex);
Matthew Barnes ab6285
+	need_join = e_flag_is_set (closure->running);
Matthew Barnes ab6285
+	e_flag_clear (closure->running);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	if (need_join)
Matthew Barnes ab6285
 		g_thread_join (closure->thread);
Matthew Barnes 8edc3a
--- evolution-data-server-1.11.2/calendar/libecal/e-cal.c.e-flag	2007-05-14 00:24:28.000000000 -0400
Matthew Barnes 8edc3a
+++ evolution-data-server-1.11.2/calendar/libecal/e-cal.c	2007-05-18 11:16:58.000000000 -0400
Matthew Barnes ab6285
@@ -33,6 +33,7 @@
Matthew Barnes ab6285
 #include <bonobo/bonobo-main.h>
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 #include <libedataserver/e-component-listener.h>
Matthew Barnes ab6285
+#include <libedataserver/e-flag.h>
Matthew Barnes ab6285
 #include <libedataserver/e-url.h>
Matthew Barnes ab6285
 #include "e-cal-marshal.h"
Matthew Barnes ab6285
 #include "e-cal-time-util.h"
Matthew Barnes ab6285
@@ -49,8 +50,7 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 typedef struct {
Matthew Barnes ab6285
-	GMutex *mutex;
Matthew Barnes ab6285
-	GCond *cond;
Matthew Barnes ab6285
+	EFlag *done;
Matthew Barnes ab6285
 	ECalendarStatus status;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	char *uid;
Matthew Barnes 8edc3a
@@ -303,8 +303,7 @@
Matthew Barnes ab6285
 {
Matthew Barnes ab6285
 	ECalendarOp *op = g_new0 (ECalendarOp, 1);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	op->mutex = g_mutex_new ();
Matthew Barnes ab6285
-	op->cond = g_cond_new ();
Matthew Barnes ab6285
+	op->done = e_flag_new ();
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	ecal->priv->current_op = op;
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
@@ -326,8 +325,7 @@
Matthew Barnes ab6285
 e_calendar_free_op (ECalendarOp *op)
Matthew Barnes ab6285
 {
Matthew Barnes ab6285
 	/* XXX more stuff here */
Matthew Barnes ab6285
-	g_cond_free (op->cond);
Matthew Barnes ab6285
-	g_mutex_free (op->mutex);
Matthew Barnes ab6285
+	e_flag_free (op->done);
Matthew Barnes ab6285
 	g_free (op);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
@@ -445,14 +443,10 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 	op->bool = read_only;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -474,14 +468,10 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 	op->string = g_strdup (address);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -497,14 +487,10 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 	op->string = g_strdup (address);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -520,14 +506,10 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 	op->string = g_strdup (attribute);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -543,14 +525,10 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 	op->string = g_strdup (capabilities);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -566,13 +544,9 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -588,13 +562,9 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -610,14 +580,10 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 	op->uid = g_strdup (uid);
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -633,13 +599,9 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -655,13 +617,9 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -677,13 +635,9 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -699,13 +653,9 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -722,8 +672,6 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 	op->list = g_list_copy (users);
Matthew Barnes ab6285
 	op->string = g_strdup (object);
Matthew Barnes 8edc3a
@@ -731,9 +679,7 @@
Matthew Barnes ab6285
 	for (l = op->list; l; l = l->next)
Matthew Barnes ab6285
 		l->data = g_strdup (l->data);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -749,14 +695,10 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 	op->string = g_strdup (object);
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -772,14 +714,10 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 	op->string = g_strdup (object);
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -796,17 +734,13 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 	op->list = g_list_copy (objects);
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	for (l = op->list; l; l = l->next)
Matthew Barnes ab6285
 		l->data = icalcomponent_new_clone (l->data);
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -822,14 +756,10 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 	op->slist = g_slist_copy (attachments);
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -845,15 +775,10 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 	op->string = g_strdup (object);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -869,15 +794,10 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 	op->uid = g_strdup (tzid);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -893,13 +813,9 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -916,8 +832,6 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 	op->list = g_list_copy (changes);
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
@@ -931,9 +845,7 @@
Matthew Barnes ab6285
 		l->data = new_ccc;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -950,17 +862,13 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 	op->list = g_list_copy (freebusy);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	for (l = op->list; l; l = l->next)
Matthew Barnes ab6285
 		l->data = e_cal_component_clone (l->data);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static void
Matthew Barnes 8edc3a
@@ -976,14 +884,10 @@
Matthew Barnes ab6285
 		return;
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	op->status = status;
Matthew Barnes ab6285
 	op->query = e_cal_view_new (query, op->listener, ecal);
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
-	g_cond_signal (op->cond);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
-	g_mutex_unlock (op->mutex);	
Matthew Barnes ab6285
+	e_flag_set (op->done);
Matthew Barnes ab6285
 }
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 static gboolean  
Matthew Barnes 8edc3a
@@ -1724,7 +1628,6 @@
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 	/* start the open operation */
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	g_mutex_unlock (priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
@@ -1737,7 +1640,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		if (priv->auth_func == NULL) {
Matthew Barnes ab6285
 			e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-			g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 			e_calendar_free_op (our_op);
Matthew Barnes ab6285
 			priv->load_state = E_CAL_LOAD_NOT_LOADED;
Matthew Barnes ab6285
 			*status = E_CALENDAR_STATUS_AUTHENTICATION_REQUIRED;
Matthew Barnes 8edc3a
@@ -1747,7 +1649,6 @@
Matthew Barnes ab6285
 		username = e_source_get_property (priv->source, "username");
Matthew Barnes ab6285
 		if (!username) {
Matthew Barnes ab6285
 			e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-			g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 			e_calendar_free_op (our_op);
Matthew Barnes ab6285
 			priv->load_state = E_CAL_LOAD_NOT_LOADED;
Matthew Barnes ab6285
 			*status = E_CALENDAR_STATUS_AUTHENTICATION_REQUIRED;
Matthew Barnes 8edc3a
@@ -1775,7 +1676,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		if (!key) {
Matthew Barnes ab6285
 			e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-			g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 			e_calendar_free_op (our_op);
Matthew Barnes ab6285
 			priv->load_state = E_CAL_LOAD_NOT_LOADED;
Matthew Barnes ab6285
 			*status = E_CALENDAR_STATUS_URI_NOT_LOADED;
Matthew Barnes 8edc3a
@@ -1786,7 +1686,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		if (!password) {
Matthew Barnes ab6285
 			e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-			g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 			e_calendar_free_op (our_op);
Matthew Barnes ab6285
 			priv->load_state = E_CAL_LOAD_NOT_LOADED;
Matthew Barnes ab6285
 			*status = E_CALENDAR_STATUS_AUTHENTICATION_REQUIRED; 
Matthew Barnes 8edc3a
@@ -1811,7 +1710,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 		
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -1825,14 +1723,11 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	*status = our_op->status;
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 	if (*status == E_CALENDAR_STATUS_OK) {
Matthew Barnes ab6285
 		priv->load_state = E_CAL_LOAD_LOADED;
Matthew Barnes 8edc3a
@@ -1988,8 +1883,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
@@ -1998,7 +1891,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_remove (priv->cal, &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -2010,14 +1902,11 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -2249,8 +2138,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	/* set it to true so that op does not emit cond signals for all notifications
Matthew Barnes ab6285
 	   from the backend */
Matthew Barnes ab6285
 	our_op->bool = TRUE;
Matthew Barnes 8edc3a
@@ -2263,7 +2150,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_isReadOnly (priv->cal, &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -2275,9 +2161,7 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 	
Matthew Barnes 8edc3a
@@ -2285,7 +2169,6 @@
Matthew Barnes ab6285
 		*read_only = our_op->bool;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes ab6285
 }
Matthew Barnes 8edc3a
@@ -2328,8 +2211,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-		g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 		g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
@@ -2338,7 +2219,6 @@
Matthew Barnes ab6285
 		GNOME_Evolution_Calendar_Cal_getCalAddress (priv->cal, &ev;;
Matthew Barnes ab6285
 		if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 			e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-			g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 			e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 			CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -2350,14 +2230,11 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-		/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-		   successful response will notity us via our cv */
Matthew Barnes ab6285
-		g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+		e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		status = our_op->status;
Matthew Barnes ab6285
 		*cal_address = our_op->string;
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -2405,8 +2282,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
@@ -2415,7 +2290,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_getAlarmEmailAddress (priv->cal, &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -2427,15 +2301,12 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 	*alarm_address = our_op->string;
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -2478,8 +2349,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
@@ -2488,7 +2357,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_getLdapAttribute (priv->cal, &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -2500,15 +2368,12 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 	*ldap_attribute = our_op->string;
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -2541,8 +2406,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
@@ -2551,7 +2414,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_getStaticCapabilities (priv->cal, &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -2563,15 +2425,12 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 	priv->capabilities = our_op->string;
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -2780,8 +2639,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_init (&ev;;
Matthew Barnes 8edc3a
@@ -2789,7 +2646,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_getDefaultObject (priv->cal, &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -2801,9 +2657,7 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
         if (status != E_CALENDAR_STATUS_OK) {
Matthew Barnes 8edc3a
@@ -2816,7 +2670,6 @@
Matthew Barnes ab6285
 	g_free (our_op->string);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -2861,15 +2714,12 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_init (&ev;;
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_getAttachmentList (priv->cal, uid, rid ? rid : "", &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -2881,9 +2731,7 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
         if (status != E_CALENDAR_STATUS_OK){ 
Matthew Barnes 8edc3a
@@ -2893,7 +2741,6 @@
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -2938,8 +2785,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_init (&ev;;
Matthew Barnes 8edc3a
@@ -2947,7 +2792,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_getObject (priv->cal, uid, rid ? rid : "", &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -2959,9 +2803,7 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
         if (status != E_CALENDAR_STATUS_OK){ 
Matthew Barnes 8edc3a
@@ -3009,7 +2851,6 @@
Matthew Barnes ab6285
 	g_free (our_op->string);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -3055,8 +2896,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_init (&ev;;
Matthew Barnes 8edc3a
@@ -3064,7 +2903,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_getObject (priv->cal, uid, "", &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -3076,9 +2914,7 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
         if (status != E_CALENDAR_STATUS_OK){ 
Matthew Barnes 8edc3a
@@ -3136,7 +2972,6 @@
Matthew Barnes ab6285
 	g_free (our_op->string);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -3206,8 +3041,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_init (&ev;;
Matthew Barnes 8edc3a
@@ -3216,7 +3049,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -3228,15 +3060,12 @@
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 	*changes = our_op->list;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -3306,8 +3135,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_init (&ev;;
Matthew Barnes 8edc3a
@@ -3316,7 +3143,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -3328,15 +3154,12 @@
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 	*objects = our_op->list;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -3439,8 +3262,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	/* create the CORBA user list to be passed to the backend */
Matthew Barnes 8edc3a
@@ -3460,7 +3281,6 @@
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -3472,15 +3292,12 @@
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 	*freebusy = our_op->list;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -4174,8 +3991,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	e_cal_component_get_uid (comp, &uid);
Matthew Barnes 8edc3a
@@ -4185,7 +4000,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_discardAlarm (priv->cal, uid, auid, &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -4197,14 +4011,11 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -4420,8 +4231,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_init (&ev;;
Matthew Barnes 8edc3a
@@ -4429,7 +4238,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_createObject (priv->cal, icalcomponent_as_ical_string (icalcomp), &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -4441,9 +4249,7 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 	if (uid)
Matthew Barnes 8edc3a
@@ -4453,7 +4259,6 @@
Matthew Barnes 8edc3a
 	}
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -4503,8 +4308,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_init (&ev;;
Matthew Barnes 8edc3a
@@ -4512,7 +4315,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_modifyObject (priv->cal, icalcomponent_as_ical_string (icalcomp), mod, &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -4524,14 +4326,11 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -4584,8 +4383,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
@@ -4594,7 +4391,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_removeObject (priv->cal, uid, rid ? rid : "", mod, &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -4606,14 +4402,11 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -4678,8 +4471,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_init (&ev;;
Matthew Barnes 8edc3a
@@ -4687,7 +4478,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_receiveObjects (priv->cal, icalcomponent_as_ical_string (icalcomp), &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -4699,14 +4489,11 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -4752,8 +4539,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_init (&ev;;
Matthew Barnes 8edc3a
@@ -4761,7 +4546,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_sendObjects (priv->cal, icalcomponent_as_ical_string (icalcomp), &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -4773,9 +4557,7 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 	*users = our_op->list;
Matthew Barnes 8edc3a
@@ -4796,7 +4578,6 @@
Matthew Barnes ab6285
 	g_free (our_op->string);
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -4841,8 +4622,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	/* Check for well known zones and in the cache */
Matthew Barnes 8edc3a
@@ -4851,7 +4630,6 @@
Matthew Barnes ab6285
 	/* If tzid is NULL or "" we return NULL, since it is a 'local time'. */
Matthew Barnes ab6285
 	if (!tzid || !tzid[0]) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		*zone = NULL;
Matthew Barnes 8edc3a
@@ -4869,7 +4647,6 @@
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	if (*zone) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_OK, error);	
Matthew Barnes 8edc3a
@@ -4881,7 +4658,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_getTimezone (priv->cal, tzid, &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -4893,9 +4669,7 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
         if (status != E_CALENDAR_STATUS_OK){ 
Matthew Barnes 8edc3a
@@ -4909,7 +4683,6 @@
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	if (!icalcomp) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -4920,7 +4693,6 @@
Matthew Barnes ab6285
 		icaltimezone_free (*zone, 1);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_OBJECT_NOT_FOUND, error);
Matthew Barnes 8edc3a
@@ -4930,7 +4702,6 @@
Matthew Barnes ab6285
 	g_hash_table_insert (priv->timezones, icaltimezone_get_tzid (*zone), *zone);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -4975,15 +4746,12 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	/* Make sure we have a valid component - UTC doesn't, nor do
Matthew Barnes ab6285
 	 * we really have to add it */
Matthew Barnes ab6285
 	if (izone == icaltimezone_get_utc_timezone ()) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 		
Matthew Barnes ab6285
 		E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_OK, error);
Matthew Barnes 8edc3a
@@ -4992,7 +4760,6 @@
Matthew Barnes ab6285
 	icalcomp = icaltimezone_get_component (izone);
Matthew Barnes ab6285
 	if (!icalcomp) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_INVALID_ARG, error);
Matthew Barnes 8edc3a
@@ -5007,7 +4774,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_addTimezone (priv->cal, tzobj, &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -5019,14 +4785,11 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -5068,8 +4831,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (ecal->priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_init (&ev;;
Matthew Barnes 8edc3a
@@ -5079,7 +4840,6 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -5091,9 +4851,7 @@
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 	*query = our_op->query;
Matthew Barnes 8edc3a
@@ -5101,7 +4859,6 @@
Matthew Barnes ab6285
 	bonobo_object_unref (BONOBO_OBJECT (our_op->listener));
Matthew Barnes ab6285
 	
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);
Matthew Barnes 8edc3a
@@ -5146,15 +4903,12 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	our_op = e_calendar_new_op (ecal);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	g_mutex_lock (our_op->mutex);
Matthew Barnes ab6285
-
Matthew Barnes ab6285
 	g_mutex_unlock (priv->mutex);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	/* FIXME Adding it to the server to change the tzid */
Matthew Barnes ab6285
 	icalcomp = icaltimezone_get_component (zone);
Matthew Barnes ab6285
 	if (!icalcomp) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_INVALID_ARG, error);
Matthew Barnes 8edc3a
@@ -5169,7 +4923,6 @@
Matthew Barnes ab6285
 	GNOME_Evolution_Calendar_Cal_setDefaultTimezone (priv->cal, tzobj, &ev;;
Matthew Barnes ab6285
 	if (BONOBO_EX (&ev)) {
Matthew Barnes ab6285
 		e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-		g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 		e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 		CORBA_exception_free (&ev;;
Matthew Barnes 8edc3a
@@ -5181,9 +4934,7 @@
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	CORBA_exception_free (&ev;;
Matthew Barnes ab6285
 
Matthew Barnes ab6285
-	/* wait for something to happen (both cancellation and a
Matthew Barnes ab6285
-	   successful response will notity us via our cv */
Matthew Barnes ab6285
-	g_cond_wait (our_op->cond, our_op->mutex);
Matthew Barnes ab6285
+	e_flag_wait (our_op->done);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	status = our_op->status;
Matthew Barnes ab6285
 
Matthew Barnes 8edc3a
@@ -5195,7 +4946,6 @@
Matthew Barnes ab6285
 	}
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	e_calendar_remove_op (ecal, our_op);
Matthew Barnes ab6285
-	g_mutex_unlock (our_op->mutex);
Matthew Barnes ab6285
 	e_calendar_free_op (our_op);
Matthew Barnes ab6285
 
Matthew Barnes ab6285
 	E_CALENDAR_CHECK_STATUS (status, error);