[evolution-patches] Patch for Calendar Authentication problems



The patch fixes the calendar authentication problems observed while
attempting to enter the password in the Evolution Password dialog box.
It involves moving open_calendar call into async_idle_cb so that the
main thread catches the callback and rearranging a couple of mutex
lock/unlock sequences. 

harish

Index: calendar/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/ChangeLog,v
retrieving revision 1.206
diff -u -p -r1.206 ChangeLog
--- calendar/ChangeLog	15 Mar 2004 19:37:09 -0000	1.206
+++ calendar/ChangeLog	16 Mar 2004 16:07:48 -0000
@@ -1,3 +1,9 @@
+2004-03-16 Harish K <kharish novell com>
+
+	* libecal/e-cal.c : Move open_calendar call into async_idle_cb
+	and rearrange mutex lock/unlock sequences. This fixes the calendar 
+	authentication problems observed while using the Password Dialog.
+
 2004-03-15  Rodrigo Moya <rodrigo ximian com>
 
 	* libedata-cal/e-cal-backend-sexp.c (func_occur_in_time_range): expand
Index: calendar/libecal/e-cal.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/libecal/e-cal.c,v
retrieving revision 1.47
diff -u -p -r1.47 e-cal.c
--- calendar/libecal/e-cal.c	10 Mar 2004 11:21:15 -0000	1.47
+++ calendar/libecal/e-cal.c	16 Mar 2004 16:07:52 -0000
@@ -1481,8 +1481,6 @@ open_calendar (ECal *ecal, gboolean only
 
 	g_mutex_lock (our_op->mutex);
 
-	g_mutex_unlock (ecal->priv->mutex);
-
 	CORBA_exception_init (&ev);
 
 	priv->load_state = E_CAL_LOAD_LOADING;
@@ -1498,7 +1496,8 @@ open_calendar (ECal *ecal, gboolean only
 		e_calendar_remove_op (ecal, our_op);
 		g_mutex_unlock (our_op->mutex);
 		e_calendar_free_op (our_op);
-
+		g_mutex_unlock (ecal->priv->mutex);
+		
 		CORBA_exception_free (&ev);
 
 		g_warning (G_STRLOC ": Unable to contact backend");
@@ -1524,6 +1523,8 @@ open_calendar (ECal *ecal, gboolean only
 	else
 		priv->load_state = E_CAL_LOAD_NOT_LOADED;
 
+	g_mutex_unlock (ecal->priv->mutex);
+
 	E_CALENDAR_CHECK_STATUS (*status, error);
 }
 
@@ -1566,6 +1567,7 @@ async_idle_cb (gpointer data)
 {
 	ECalAsyncData *ccad = data;
 
+	ccad->result = open_calendar (ccad->ecal, ccad->exists, NULL,
&ccad->status);
 	g_signal_emit (G_OBJECT (ccad->ecal), e_cal_signals[CAL_OPENED], 0,
ccad->status);
 
 	/* free memory */
@@ -1580,7 +1582,6 @@ open_async (gpointer data) 
 {
 	ECalAsyncData *ccad = data;
 
-	ccad->result = open_calendar (ccad->ecal, ccad->exists, NULL,
&ccad->status);
 	g_idle_add ((GSourceFunc) async_idle_cb, ccad);
 
 	return GINT_TO_POINTER (ccad->result);





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