Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:pchenthill
evolution-data-server
bnc-211855-eds-crash.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bnc-211855-eds-crash.diff of Package evolution-data-server
Index: calendar/backends/groupwise/e-cal-backend-groupwise-utils.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise-utils.c,v retrieving revision 1.73.2.3 diff -u -p -r1.73.2.3 e-cal-backend-groupwise-utils.c --- calendar/backends/groupwise/e-cal-backend-groupwise-utils.c 11 Aug 2006 08:08:01 -0000 1.73.2.3 +++ calendar/backends/groupwise/e-cal-backend-groupwise-utils.c 22 Sep 2006 09:14:35 -0000 @@ -1851,9 +1851,11 @@ add_return_value (EGwSendOptionsReturnNo g_free (value), value = NULL; } -void -e_cal_backend_groupwise_store_settings (EGwSendOptions *opts, ECalBackendGroupwise *cbgw) +gboolean +e_cal_backend_groupwise_store_settings (GwSettings *hold) { + ECalBackendGroupwise *cbgw; + EGwSendOptions *opts; EGwSendOptionsGeneral *gopts; EGwSendOptionsStatusTracking *sopts; icaltimetype tt; @@ -1864,6 +1866,8 @@ e_cal_backend_groupwise_store_settings ( const char *uid; char *value; + cbgw = hold->cbgw; + opts = hold->opts; source = e_cal_backend_get_source (E_CAL_BACKEND (cbgw)); kind = e_cal_backend_get_kind (E_CAL_BACKEND (cbgw)); @@ -1951,7 +1955,15 @@ e_cal_backend_groupwise_store_settings ( add_return_value (sopts->completed, source, "return-complete"); } + e_source_list_sync (source_list, NULL); + + g_object_unref (hold->opts); + g_free (hold); + g_object_unref (gconf); + g_object_unref (source_list); + + return FALSE; } gboolean Index: calendar/backends/groupwise/e-cal-backend-groupwise-utils.h =================================================================== RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise-utils.h,v retrieving revision 1.18.2.1 diff -u -p -r1.18.2.1 e-cal-backend-groupwise-utils.h --- calendar/backends/groupwise/e-cal-backend-groupwise-utils.h 22 Jul 2006 09:26:45 -0000 1.18.2.1 +++ calendar/backends/groupwise/e-cal-backend-groupwise-utils.h 22 Sep 2006 09:14:35 -0000 @@ -53,7 +53,7 @@ void e_gw_item_set_changes (EGw EGwConnectionStatus e_gw_connection_create_appointment (EGwConnection *cnc, const char *container, ECalBackendGroupwise *cbgw, ECalComponent *comp, GSList **id_list); EGwConnectionStatus e_gw_connection_send_appointment (ECalBackendGroupwise *cbgw, const char *container, ECalComponent *comp, icalproperty_method method, gboolean all_instances, ECalComponent **created_comp, icalparameter_partstat *pstatus); EGwConnectionStatus e_gw_connection_get_freebusy_info (EGwConnection *cnc, GList *users, time_t start, time_t end, GList **freebusy, icaltimezone *default_zone); -void e_cal_backend_groupwise_store_settings (EGwSendOptions *opts, ECalBackendGroupwise *cbgw); +gboolean e_cal_backend_groupwise_store_settings (GwSettings *hold); EGwItem * e_gw_item_new_for_delegate_from_cal (ECalBackendGroupwise *cbgw, ECalComponent *comp); gboolean e_cal_backend_groupwise_utils_check_delegate (ECalComponent *comp, const char *email); Index: calendar/backends/groupwise/e-cal-backend-groupwise.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise.c,v retrieving revision 1.173.2.9 diff -u -p -r1.173.2.9 e-cal-backend-groupwise.c --- calendar/backends/groupwise/e-cal-backend-groupwise.c 29 Aug 2006 09:15:04 -0000 1.173.2.9 +++ calendar/backends/groupwise/e-cal-backend-groupwise.c 22 Sep 2006 09:14:35 -0000 @@ -77,6 +77,9 @@ struct _ECalBackendGroupwisePrivate { /* number of calendar items in the folder */ guint32 total_count; + + /* timeout handler for syncing sendoptions */ + guint sendoptions_sync_timeout; /* fields for storing info while offline */ char *user_email; @@ -641,8 +644,14 @@ cache_init (ECalBackendGroupwise *cbgw) } cnc_status = e_gw_connection_get_settings (priv->cnc, &opts); if (cnc_status == E_GW_CONNECTION_STATUS_OK) { - e_cal_backend_groupwise_store_settings (opts, cbgw); - g_object_unref (opts); + GwSettings *hold = g_new0 (GwSettings, 1); + + hold->cbgw = cbgw; + hold->opts = opts; + + /* We now sync the sendoptions into e-source using the GLIB main loop. Doing this operation + in a thread causes crashes. */ + priv->sendoptions_sync_timeout = g_idle_add ((GSourceFunc ) e_cal_backend_groupwise_store_settings, hold); } else g_warning (G_STRLOC ": Could not get the settings from the server"); @@ -977,6 +986,11 @@ e_cal_backend_groupwise_finalize (GObjec priv->timeout_id = 0; } + if (priv->sendoptions_sync_timeout) { + g_source_remove (priv->sendoptions_sync_timeout); + priv->sendoptions_sync_timeout = 0; + } + g_free (priv); cbgw->priv = NULL; @@ -2450,6 +2464,7 @@ e_cal_backend_groupwise_init (ECalBacken priv->timeout_id = 0; priv->cnc = NULL; + priv->sendoptions_sync_timeout = 0; /* create the mutex for thread safety */ priv->mutex = g_mutex_new (); Index: calendar/backends/groupwise/e-cal-backend-groupwise.h =================================================================== RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise.h,v retrieving revision 1.8 diff -u -p -r1.8 e-cal-backend-groupwise.h --- calendar/backends/groupwise/e-cal-backend-groupwise.h 31 Aug 2005 04:21:52 -0000 1.8 +++ calendar/backends/groupwise/e-cal-backend-groupwise.h 22 Sep 2006 09:14:35 -0000 @@ -51,6 +51,11 @@ struct _ECalBackendGroupwiseClass { ECalBackendSyncClass parent_class; }; +typedef struct { + ECalBackendGroupwise *cbgw; + EGwSendOptions *opts; +} GwSettings; + GType e_cal_backend_groupwise_get_type (void); EGwConnection* e_cal_backend_groupwise_get_connection (ECalBackendGroupwise *cbgw); GHashTable* e_cal_backend_groupwise_get_categories_by_id (ECalBackendGroupwise *cbgw);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor