diff options
Diffstat (limited to 'calendar/gui')
-rw-r--r-- | calendar/gui/e-meeting-model.c | 41 |
1 files changed, 29 insertions, 12 deletions
diff --git a/calendar/gui/e-meeting-model.c b/calendar/gui/e-meeting-model.c index 0cc67304ee..273a25672a 100644 --- a/calendar/gui/e-meeting-model.c +++ b/calendar/gui/e-meeting-model.c @@ -1037,6 +1037,28 @@ process_free_busy_comp (EMeetingAttendee *ia, icalcomponent *fb_comp, icalcompon } static void +process_callbacks (EMeetingModel *im) +{ + EMeetingModelPrivate *priv; + GList *l, *m; + + priv = im->priv; + + for (l = priv->refresh_callbacks, m = priv->refresh_data; l != NULL; l = l->next, m = m->next) { + EMeetingModelRefreshCallback cb = l->data; + + cb (m->data); + } + + g_list_free (priv->refresh_callbacks); + g_list_free (priv->refresh_data); + priv->refresh_callbacks = NULL; + priv->refresh_data = NULL; + + priv->refreshing = FALSE; +} + +static void process_free_busy (EMeetingModel *im, EMeetingAttendee *ia, char *text) { EMeetingModelPrivate *priv; @@ -1096,17 +1118,8 @@ async_close (GnomeVFSAsyncHandle *handle, priv->refresh_count--; - if (priv->refresh_count == 0) { - GList *l, *m; - - for (l = priv->refresh_callbacks, m = priv->refresh_data; l != NULL; l = l->next, m = m->next) { - EMeetingModelRefreshCallback cb = l->data; - - cb (m->data); - } - - priv->refreshing = FALSE; - } + if (priv->refresh_count == 0) + process_callbacks (r_data->im); } static void @@ -1253,7 +1266,11 @@ e_meeting_model_refresh_busy_periods (EMeetingModel *im, EMeetingModelRefreshCal if (ia != NULL) process_free_busy (im, ia, cal_component_get_as_string (comp)); - } + + process_callbacks (im); + } + + } /* Look for fburl's of attendee with no free busy info on server */ |