aboutsummaryrefslogtreecommitdiff
path: root/src/planner.c
diff options
context:
space:
mode:
authorCharles Kerr <charles.kerr@canonical.com>2013-09-06 14:34:32 +0000
committerTarmac <Unknown>2013-09-06 14:34:32 +0000
commitddebe3c47040869cb8fe94729c43f10f2b763550 (patch)
tree178833e4a78443e278275c8ff3bbe2ae424cbcca /src/planner.c
parentc312fcce200445ec1e6d9b69f35c6a6cb9e80313 (diff)
parentf35c8eb35f88ef43e71395445067d30cd3a48c72 (diff)
downloadayatana-indicator-datetime-ddebe3c47040869cb8fe94729c43f10f2b763550.tar.gz
ayatana-indicator-datetime-ddebe3c47040869cb8fe94729c43f10f2b763550.tar.bz2
ayatana-indicator-datetime-ddebe3c47040869cb8fe94729c43f10f2b763550.zip
Make the EDS planner nonblocking. Fixes: https://bugs.launchpad.net/bugs/1204532.
Approved by Ted Gould, PS Jenkins bot.
Diffstat (limited to 'src/planner.c')
-rw-r--r--src/planner.c31
1 files changed, 29 insertions, 2 deletions
diff --git a/src/planner.c b/src/planner.c
index 1643651..124aeae 100644
--- a/src/planner.c
+++ b/src/planner.c
@@ -178,17 +178,44 @@ compare_appointments_by_start_time (gconstpointer ga, gconstpointer gb)
return g_date_time_compare (a->begin, b->begin);
}
+void
+indicator_datetime_planner_get_appointments (IndicatorDatetimePlanner * self,
+ GDateTime * begin,
+ GDateTime * end,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ IndicatorDatetimePlannerClass * klass;
+
+ g_return_if_fail (INDICATOR_IS_DATETIME_PLANNER (self));
+
+ klass = INDICATOR_DATETIME_PLANNER_GET_CLASS (self);
+ g_return_if_fail (klass->get_appointments != NULL);
+ klass->get_appointments (self, begin, end, callback, user_data);
+}
+
GSList *
-indicator_datetime_planner_get_appointments (IndicatorDatetimePlanner * self, GDateTime * begin, GDateTime * end)
+indicator_datetime_planner_get_appointments_finish (IndicatorDatetimePlanner * self,
+ GAsyncResult * res,
+ GError ** error)
{
+ IndicatorDatetimePlannerClass * klass;
GSList * appointments;
g_return_val_if_fail (INDICATOR_IS_DATETIME_PLANNER (self), NULL);
- appointments = INDICATOR_DATETIME_PLANNER_GET_CLASS (self)->get_appointments (self, begin, end);
+ klass = INDICATOR_DATETIME_PLANNER_GET_CLASS (self);
+ g_return_val_if_fail (klass->get_appointments_finish != NULL, NULL);
+ appointments = klass->get_appointments_finish (self, res, error);
return g_slist_sort (appointments, compare_appointments_by_start_time);
}
+void
+indicator_datetime_planner_free_appointments (GSList * l)
+{
+ g_slist_free_full (l, (GDestroyNotify)indicator_datetime_appt_free);
+}
+
gboolean
indicator_datetime_planner_is_configured (IndicatorDatetimePlanner * self)
{