[evolution-data-server] Bug #634084 - ECal reports loaded state too early
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Bug #634084 - ECal reports loaded state too early
- Date: Mon, 8 Nov 2010 12:47:23 +0000 (UTC)
commit 3e433f5986da291b2bb1ca40784634263dc1c68f
Author: Milan Crha <mcrha redhat com>
Date: Mon Nov 8 13:46:55 2010 +0100
Bug #634084 - ECal reports loaded state too early
calendar/libecal/e-cal.c | 7 ++-
calendar/libedata-cal/e-cal-backend-intervaltree.c | 45 +++++++++++++-------
2 files changed, 35 insertions(+), 17 deletions(-)
---
diff --git a/calendar/libecal/e-cal.c b/calendar/libecal/e-cal.c
index 2890008..fce2778 100644
--- a/calendar/libecal/e-cal.c
+++ b/calendar/libecal/e-cal.c
@@ -1151,6 +1151,9 @@ async_open_report_result (ECal *ecal, const GError *error)
g_return_if_fail (ecal && E_IS_CAL (ecal));
+ if (!error)
+ ecal->priv->load_state = E_CAL_LOAD_LOADED;
+
if (error) {
#ifndef E_CAL_DISABLE_DEPRECATED
status = get_status_from_error (error);
@@ -1284,6 +1287,8 @@ open_calendar (ECal *ecal, gboolean only_if_exists, GError **error,
*status = E_CALENDAR_STATUS_DBUS_EXCEPTION;
#endif
}
+ if (!*error)
+ priv->load_state = E_CAL_LOAD_LOADED;
} else {
e_gdbus_cal_call_open (priv->gdbus_cal, only_if_exists, username ? username : "", password ? password : "", NULL, (GAsyncReadyCallback) async_open_ready_cb, ecal);
}
@@ -1292,8 +1297,6 @@ open_calendar (ECal *ecal, gboolean only_if_exists, GError **error,
g_free (username);
if (!*error) {
- priv->load_state = E_CAL_LOAD_LOADED;
-
if (!async) {
GError *err = NULL;
diff --git a/calendar/libedata-cal/e-cal-backend-intervaltree.c b/calendar/libedata-cal/e-cal-backend-intervaltree.c
index 95c1c06..7e069d4 100644
--- a/calendar/libedata-cal/e-cal-backend-intervaltree.c
+++ b/calendar/libedata-cal/e-cal-backend-intervaltree.c
@@ -137,13 +137,15 @@ compare_intervals (time_t x_start, time_t x_end, time_t y_start, time_t y_end)
static void
left_rotate (EIntervalTree *tree, EIntervalNode *x)
{
- EIntervalTreePrivate *priv = tree->priv;
+ EIntervalTreePrivate *priv;
EIntervalNode *y;
- EIntervalNode *nil = priv->nil;
+ EIntervalNode *nil;
g_return_if_fail (tree != NULL);
g_return_if_fail (x != NULL);
+ priv = tree->priv;
+ nil = priv->nil;
y = x->right;
x->right = y->left;
@@ -180,13 +182,15 @@ left_rotate (EIntervalTree *tree, EIntervalNode *x)
static void
right_rotate (EIntervalTree *tree, EIntervalNode *y)
{
- EIntervalTreePrivate *priv = tree->priv;
+ EIntervalTreePrivate *priv;
EIntervalNode *x;
- EIntervalNode *nil = priv->nil;
+ EIntervalNode *nil;
g_return_if_fail (tree != NULL);
g_return_if_fail (y != NULL);
+ priv = tree->priv;
+ nil = priv->nil;
x = y->left;
y->left = x->right;
@@ -272,16 +276,19 @@ binary_tree_insert (EIntervalTree *tree, EIntervalNode *z)
gboolean
e_intervaltree_insert (EIntervalTree *tree, time_t start, time_t end, ECalComponent *comp)
{
- EIntervalTreePrivate *priv = tree->priv;
+ EIntervalTreePrivate *priv;
EIntervalNode *y;
EIntervalNode *x;
EIntervalNode *newNode;
const gchar *uid;
gchar *rid;
+
g_return_val_if_fail (tree != NULL, FALSE);
g_return_val_if_fail (comp != NULL, FALSE);
g_return_val_if_fail (E_IS_CAL_COMPONENT (comp), FALSE);
+ priv = tree->priv;
+
g_static_rec_mutex_lock (&priv->mutex);
x = g_new (EIntervalNode, 1);
@@ -360,15 +367,18 @@ e_intervaltree_insert (EIntervalTree *tree, time_t start, time_t end, ECalCompon
static EIntervalNode*
intervaltree_node_next (EIntervalTree *tree, EIntervalNode *x)
{
- EIntervalTreePrivate *priv = tree->priv;
- EIntervalNode *y;
- EIntervalNode *nil = priv->nil;
- EIntervalNode *root = priv->root;
+ EIntervalTreePrivate *priv;
+ EIntervalNode *y, *nil, *root;
g_return_val_if_fail (tree != NULL, NULL);
g_return_val_if_fail (x != NULL, NULL);
+
+ priv = tree->priv;
g_return_val_if_fail (x != priv->nil, NULL);
+ nil = priv->nil;
+ root = priv->root;
+
if (nil != (y = x->right))
{
/* find out minimum of right subtree of x (assignment to y is ok) */
@@ -401,12 +411,13 @@ intervaltree_node_next (EIntervalTree *tree, EIntervalNode *x)
void
e_intervaltree_destroy (EIntervalTree *tree)
{
- EIntervalTreePrivate *priv = tree->priv;
+ EIntervalTreePrivate *priv;
EIntervalNode *node;
GList *stack_start = NULL, *pos;
g_return_if_fail (tree != NULL);
+ priv = tree->priv;
stack_start = pos = g_list_insert (stack_start, priv->root->left, -1);
while (pos != NULL)
@@ -523,13 +534,14 @@ e_intervaltree_fixup_deletion (EIntervalTree *tree, EIntervalNode *x)
GList*
e_intervaltree_search (EIntervalTree *tree, time_t start, time_t end)
{
- EIntervalTreePrivate *priv = tree->priv;
+ EIntervalTreePrivate *priv;
EIntervalNode *node;
GList *list = NULL;
GList *stack_start = NULL, *pos;
g_return_val_if_fail (tree != NULL, NULL);
+ priv = tree->priv;
g_static_rec_mutex_lock (&priv->mutex);
stack_start = pos = g_list_insert (stack_start, priv->root->left, -1);
@@ -608,10 +620,11 @@ e_intervaltree_search_component (EIntervalTree *tree,
const gchar *searched_uid,
const gchar *searched_rid)
{
- EIntervalTreePrivate *priv = tree->priv;
+ EIntervalTreePrivate *priv;
g_return_val_if_fail (tree != NULL, NULL);
g_return_val_if_fail (searched_uid != NULL, NULL);
+ priv = tree->priv;
if (!searched_uid)
{
g_warning ("Searching the interval tree, the component "
@@ -634,15 +647,17 @@ e_intervaltree_remove (EIntervalTree *tree,
const gchar *uid,
const gchar *rid)
{
- EIntervalTreePrivate *priv = tree->priv;
+ EIntervalTreePrivate *priv;
EIntervalNode *y;
EIntervalNode *x;
EIntervalNode *z;
- EIntervalNode *nil = priv->nil;
- EIntervalNode *root = priv->root;
+ EIntervalNode *nil, *root;
g_return_val_if_fail (tree != NULL, FALSE);
+ priv = tree->priv;
+ nil = priv->nil;
+ root = priv->root;
g_static_rec_mutex_lock (&priv->mutex);
z = e_intervaltree_search_component (tree, uid, rid);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]