File bnc-467270-cal-busy-eds.patch of Package evolution-data-server
diff --git a/calendar/libecal/e-cal.c b/calendar/libecal/e-cal.c
index c8f1c91..8d30735 100644
--- a/calendar/libecal/e-cal.c
+++ b/calendar/libecal/e-cal.c
@@ -60,6 +60,7 @@ typedef struct {
gboolean bool;
char *string;
+ char *op_str;
ECalView *query;
ECalViewListener *listener;
} ECalendarOp;
@@ -300,13 +301,14 @@ convert_type (ECalSourceType type)
/* EBookOp calls */
static ECalendarOp*
-e_calendar_new_op (ECal *ecal)
+e_calendar_new_op (ECal *ecal, const char *str)
{
ECalendarOp *op = g_new0 (ECalendarOp, 1);
op->done = e_flag_new ();
ecal->priv->current_op = op;
+ op->op_str = g_strdup (str);
return op;
}
@@ -327,6 +329,7 @@ e_calendar_free_op (ECalendarOp *op)
{
/* XXX more stuff here */
e_flag_free (op->done);
+ g_free (op->op_str);
g_free (op);
}
@@ -1643,7 +1646,7 @@ open_calendar (ECal *ecal, gboolean only_if_exists, GError **error, ECalendarSta
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
/* start the open operation */
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "open_calendar");
g_mutex_unlock (priv->mutex);
@@ -1898,7 +1901,7 @@ e_cal_remove (ECal *ecal, GError **error)
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "cal_remove");
g_mutex_unlock (ecal->priv->mutex);
@@ -2153,7 +2156,7 @@ get_read_only (ECal *ecal, gboolean *read_only, GError **error)
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "get_read_only");
/* set it to true so that op does not emit cond signals for all notifications
from the backend */
@@ -2226,7 +2229,7 @@ e_cal_get_cal_address (ECal *ecal, char **cal_address, GError **error)
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "get_cal_address");
g_mutex_unlock (ecal->priv->mutex);
@@ -2297,7 +2300,7 @@ e_cal_get_alarm_email_address (ECal *ecal, char **alarm_address, GError **error)
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "get_alarm_address");
g_mutex_unlock (ecal->priv->mutex);
@@ -2364,7 +2367,7 @@ e_cal_get_ldap_attribute (ECal *ecal, char **ldap_attribute, GError **error)
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "get_ldap_attribute");
g_mutex_unlock (ecal->priv->mutex);
@@ -2421,7 +2424,7 @@ load_static_capabilities (ECal *ecal, GError **error)
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "load_static_capabilities");
g_mutex_unlock (ecal->priv->mutex);
@@ -2654,7 +2657,7 @@ e_cal_get_default_object (ECal *ecal, icalcomponent **icalcomp, GError **error)
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "get_default_object");
g_mutex_unlock (ecal->priv->mutex);
@@ -2729,7 +2732,7 @@ e_cal_get_attachments_for_comp (ECal *ecal, const char *uid, const char *rid, GS
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "get_attachments_for_comp");
g_mutex_unlock (ecal->priv->mutex);
@@ -2800,7 +2803,7 @@ e_cal_get_object (ECal *ecal, const char *uid, const char *rid, icalcomponent **
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "get_object");
g_mutex_unlock (ecal->priv->mutex);
@@ -2911,7 +2914,7 @@ e_cal_get_objects_for_uid (ECal *ecal, const char *uid, GList **objects, GError
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "get_objects_for_uid");
g_mutex_unlock (ecal->priv->mutex);
@@ -3054,7 +3057,7 @@ e_cal_get_changes (ECal *ecal, const char *change_id, GList **changes, GError **
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "get_changes");
g_mutex_unlock (ecal->priv->mutex);
@@ -3148,7 +3151,7 @@ e_cal_get_object_list (ECal *ecal, const char *query, GList **objects, GError **
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "get_object_list");
g_mutex_unlock (ecal->priv->mutex);
@@ -3275,7 +3278,7 @@ e_cal_get_free_busy (ECal *ecal, GList *users, time_t start, time_t end,
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "get_freebusy");
g_mutex_unlock (ecal->priv->mutex);
@@ -3744,6 +3747,7 @@ e_cal_generate_instances_for_object (ECal *ecal, icalcomponent *icalcomp,
ECalComponentDateTime datetime;
icaltimezone *start_zone;
struct instances_info *instances_hold;
+ gboolean is_single_instance = FALSE;
g_return_if_fail (E_IS_CAL (ecal));
g_return_if_fail (start >= 0);
@@ -3755,9 +3759,12 @@ e_cal_generate_instances_for_object (ECal *ecal, icalcomponent *icalcomp,
comp = e_cal_component_new ();
e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (icalcomp));
+ if (!e_cal_component_has_recurrences (comp))
+ is_single_instance = TRUE;
+
/*If the backend stores it as individual instances and does not
* have a master object - do not expand*/
- if (e_cal_get_static_capability (ecal, CAL_STATIC_CAPABILITY_RECURRENCES_NO_MASTER)) {
+ if (is_single_instance || e_cal_get_static_capability (ecal, CAL_STATIC_CAPABILITY_RECURRENCES_NO_MASTER)) {
/*return the same instance */
result = (* cb) (comp, icaltime_as_timet_with_zone (icalcomponent_get_dtstart (icalcomp), ecal->priv->default_zone),
@@ -4024,7 +4031,7 @@ e_cal_discard_alarm (ECal *ecal, ECalComponent *comp, const char *auid, GError *
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "discard_alarm");
g_mutex_unlock (ecal->priv->mutex);
@@ -4265,7 +4272,7 @@ e_cal_create_object (ECal *ecal, icalcomponent *icalcomp, char **uid, GError **e
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "create_object");
g_mutex_unlock (ecal->priv->mutex);
@@ -4346,7 +4353,7 @@ e_cal_modify_object (ECal *ecal, icalcomponent *icalcomp, CalObjModType mod, GEr
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "modify_object");
g_mutex_unlock (ecal->priv->mutex);
@@ -4424,7 +4431,7 @@ e_cal_remove_object_with_mod (ECal *ecal, const char *uid,
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "remove_object_with_mod");
g_mutex_unlock (ecal->priv->mutex);
@@ -4513,7 +4520,7 @@ e_cal_receive_objects (ECal *ecal, icalcomponent *icalcomp, GError **error)
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "receive_objects");
g_mutex_unlock (ecal->priv->mutex);
@@ -4585,7 +4592,7 @@ e_cal_send_objects (ECal *ecal, icalcomponent *icalcomp, GList **users, icalcomp
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "send_objects");
g_mutex_unlock (ecal->priv->mutex);
@@ -4672,7 +4679,7 @@ e_cal_get_timezone (ECal *ecal, const char *tzid, icaltimezone **zone, GError **
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "get_timezone");
g_mutex_unlock (priv->mutex);
@@ -4836,7 +4843,7 @@ e_cal_add_timezone (ECal *ecal, icaltimezone *izone, GError **error)
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "add_timezone");
g_mutex_unlock (priv->mutex);
@@ -4923,7 +4930,7 @@ e_cal_get_query (ECal *ecal, const char *sexp, ECalView **query, GError **error)
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "get_query");
g_mutex_unlock (ecal->priv->mutex);
@@ -4995,7 +5002,7 @@ e_cal_set_default_timezone (ECal *ecal, icaltimezone *zone, GError **error)
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
}
- our_op = e_calendar_new_op (ecal);
+ our_op = e_calendar_new_op (ecal, "set_default_timezone");
g_mutex_unlock (priv->mutex);