From a1a48043158612a493e1382e71501f1577ad1e68 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Wed, 15 Apr 2020 19:16:00 -0300 Subject: [PATCH] timeline: Only modify event tree once Now that we queue one event per subscriber, we need to make sure to update the range tree only once. --- src/core/gcal-timeline.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/core/gcal-timeline.c b/src/core/gcal-timeline.c index bd098958..7c51ea22 100644 --- a/src/core/gcal-timeline.c +++ b/src/core/gcal-timeline.c @@ -450,8 +450,13 @@ on_calendar_monitor_event_added_cb (GcalCalendarMonitor *monitor, for (i = 0; subscribers_at_range && i < subscribers_at_range->len; i++) { - GcalTimelineSubscriber *subscriber = g_ptr_array_index (subscribers_at_range, i); - queue_event_data (self, ADD_EVENT, subscriber, event, NULL, TRUE); + GcalTimelineSubscriber *subscriber; + gboolean update_ranges; + + subscriber = g_ptr_array_index (subscribers_at_range, i); + update_ranges = i == 0; + + queue_event_data (self, ADD_EVENT, subscriber, event, NULL, update_ranges); } GCAL_EXIT; @@ -477,8 +482,13 @@ on_calendar_monitor_event_updated_cb (GcalCalendarMonitor *monitor, for (i = 0; subscribers_at_range && i < subscribers_at_range->len; i++) { - GcalTimelineSubscriber *subscriber = g_ptr_array_index (subscribers_at_range, i); - queue_event_data (self, UPDATE_EVENT, subscriber, event, old_event, TRUE); + GcalTimelineSubscriber *subscriber; + gboolean update_ranges; + + subscriber = g_ptr_array_index (subscribers_at_range, i); + update_ranges = i == 0; + + queue_event_data (self, UPDATE_EVENT, subscriber, event, old_event, update_ranges); } GCAL_EXIT; @@ -502,8 +512,13 @@ on_calendar_monitor_event_removed_cb (GcalCalendarMonitor *monitor, for (i = 0; subscribers_at_range && i < subscribers_at_range->len; i++) { - GcalTimelineSubscriber *subscriber = g_ptr_array_index (subscribers_at_range, i); - queue_event_data (self, REMOVE_EVENT, subscriber, event, NULL, TRUE); + GcalTimelineSubscriber *subscriber; + gboolean update_ranges; + + subscriber = g_ptr_array_index (subscribers_at_range, i); + update_ranges = i == 0; + + queue_event_data (self, REMOVE_EVENT, subscriber, event, NULL, update_ranges); } GCAL_EXIT;