[evolution/gnome-3-8] Workaround broken Free/Busy fetching (Bug #692361)



commit 91c44c77ebfc891dc3f65d2317a28b970185dc0a
Author: Milan Crha <mcrha redhat com>
Date:   Fri Apr 19 10:43:47 2013 +0200

    Workaround broken Free/Busy fetching (Bug #692361)

 calendar/gui/e-meeting-store.c               |  5 +++++
 plugins/publish-calendar/publish-format-fb.c | 10 ++++++++++
 2 files changed, 15 insertions(+)
---
diff --git a/calendar/gui/e-meeting-store.c b/calendar/gui/e-meeting-store.c
index ae10d60..6abb137 100644
--- a/calendar/gui/e-meeting-store.c
+++ b/calendar/gui/e-meeting-store.c
@@ -1567,6 +1567,11 @@ freebusy_async (gpointer data)
                e_cal_client_get_free_busy_sync (
                        fbd->client, fbd->startt,
                        fbd->endt, fbd->users, NULL, NULL);
+               /* This is to workaround broken dispatch of "free-busy-data" signal,
+                  introduced in 3.8.0. This code can be removed once the below bug is
+                  properly fixed: https://bugzilla.gnome.org/show_bug.cgi?id=692361
+               */
+               g_usleep (G_USEC_PER_SEC / 10);
                g_signal_handler_disconnect (fbd->client, sigid);
                priv->num_queries--;
                g_mutex_unlock (&mutex);
diff --git a/plugins/publish-calendar/publish-format-fb.c b/plugins/publish-calendar/publish-format-fb.c
index 9ead6ef..c062994 100644
--- a/plugins/publish-calendar/publish-format-fb.c
+++ b/plugins/publish-calendar/publish-format-fb.c
@@ -117,6 +117,16 @@ write_calendar (const gchar *uid,
        if (e_cal_client_get_free_busy_sync (E_CAL_CLIENT (client), start, end, users, NULL, error)) {
                gchar *ical_string;
                GSList *iter;
+               gboolean done = FALSE;
+
+               /* This is to workaround broken dispatch of "free-busy-data" signal,
+                  introduced in 3.8.0. This code can be removed once the below bug is
+                  properly fixed: https://bugzilla.gnome.org/show_bug.cgi?id=692361
+               */
+               while (!done) {
+                       g_usleep (G_USEC_PER_SEC / 10);
+                       done = !g_main_context_iteration (NULL, FALSE);
+               }
 
                for (iter = objects; iter; iter = iter->next) {
                        ECalComponent *comp = iter->data;


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