timeline: Add already cached events to new subscribers
This commit is contained in:
@@ -399,6 +399,44 @@ calculate_changed_events (GcalTimeline *self,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
add_cached_events_to_subscriber (GcalTimeline *self,
|
||||||
|
GcalTimelineSubscriber *subscriber)
|
||||||
|
{
|
||||||
|
g_autoptr (GDateTime) subscriber_start = NULL;
|
||||||
|
g_autoptr (GDateTime) subscriber_end = NULL;
|
||||||
|
g_autoptr (GPtrArray) subscriber_array = NULL;
|
||||||
|
g_autoptr (GPtrArray) events_to_add = NULL;
|
||||||
|
gint i;
|
||||||
|
|
||||||
|
GCAL_ENTRY;
|
||||||
|
|
||||||
|
subscriber_start = gcal_timeline_subscriber_get_range_start (subscriber);
|
||||||
|
subscriber_end = gcal_timeline_subscriber_get_range_end (subscriber);
|
||||||
|
|
||||||
|
events_to_add = gcal_range_tree_get_data_at_range (self->events, subscriber_start, subscriber_end);
|
||||||
|
|
||||||
|
subscriber_array = g_ptr_array_new ();
|
||||||
|
g_ptr_array_add (subscriber_array, subscriber);
|
||||||
|
|
||||||
|
for (i = 0; events_to_add && i < events_to_add->len; i++)
|
||||||
|
{
|
||||||
|
GcalEvent *event = g_ptr_array_index (events_to_add, i);
|
||||||
|
|
||||||
|
if (!gcal_event_is_within_range (event, subscriber_start, subscriber_end))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
GCAL_TRACE_MSG ("Queueing event addition for subscriber %s (event: '%s' (%s))",
|
||||||
|
G_OBJECT_TYPE_NAME (subscriber),
|
||||||
|
gcal_event_get_summary (event),
|
||||||
|
gcal_event_get_uid (event));
|
||||||
|
|
||||||
|
queue_event_data (self, ADD_EVENT, subscriber_array, event, NULL, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
GCAL_EXIT;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
update_subscriber_range (GcalTimeline *self,
|
update_subscriber_range (GcalTimeline *self,
|
||||||
GcalTimelineSubscriber *subscriber)
|
GcalTimelineSubscriber *subscriber)
|
||||||
@@ -931,6 +969,7 @@ gcal_timeline_add_subscriber (GcalTimeline *self,
|
|||||||
self,
|
self,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
|
add_cached_events_to_subscriber (self, subscriber);
|
||||||
update_subscriber_range (self, subscriber);
|
update_subscriber_range (self, subscriber);
|
||||||
update_range (self);
|
update_range (self);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user