Georges Basile Stavracas Neto
a1a4804315
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.
2020-04-15 19:16:00 -03:00
Georges Basile Stavracas Neto
678d0acc00
timeline: Remove subscriber from range tree as well
...
update_range() does not remove any subscriber. They must be
removed manually.
2020-04-15 18:49:36 -03:00
Georges Basile Stavracas Neto
e9812b2f28
timeline: Don't try to use removed subscribers
...
Because the timeline is essentially asynchronous, it may
try and process events after their subscribers were removed.
Protect against that.
Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/576
2020-04-15 18:49:36 -03:00
Georges Basile Stavracas Neto
db668a0b90
timeline: Queue one event per subscriber
...
Right now, GcalTimeline queues one event per N subscribers. Queue
one event per subscriber instead.
2020-04-15 18:49:36 -03:00
Michael Catanzaro
60c3c26ad6
timeline: fix leak of timeline source
...
g_source_destroy doesn't free memory, just removes the source from its
main context. We have to do both. (g_source_unref() might call
g_source_destroy() if it has the last ref, but if something else has
another ref, then disaster could result if we don't call it manually.)
2020-04-15 21:18:16 +00:00
Georges Basile Stavracas Neto
fd32492053
timeline, calendar-monitor: Remove useless event range checks
...
GcalRange is now smart enough to compare correctly with other ranges.
2020-04-14 19:08:06 +00:00
Georges Basile Stavracas Neto
d4a6cd0e61
timeline: Process events in batches
...
A batch size of 5 doesn't seem to impact the mainloop
any more than a batch of size 1, but it reduces the
amount of time spinning the loop quite considerably.
2020-04-14 19:08:06 +00:00
Georges Basile Stavracas Neto
16c156914a
calendar-monitor: Use GcalRange
2020-04-14 19:08:06 +00:00
Georges Basile Stavracas Neto
f3c3bbf5ab
event: Use GcalRange in public API
2020-04-14 19:08:06 +00:00
Georges Basile Stavracas Neto
12fd607d56
utils: Make date comparison follow time comparison semantics
...
Right now, comparing dates with gcal_date_time_compare_date() gives
the exact opposite result of when comparing using g_date_time_compare().
As shown by this patch, this was a source of *many* bugs.
2020-04-14 19:08:06 +00:00
Georges Basile Stavracas Neto
3efbc2436c
range-tree: Use GcalRange
2020-04-14 19:08:05 +00:00
Georges Basile Stavracas Neto
aaab4af282
timeline: Respond well to subscriber removal
2020-04-01 23:10:01 -03:00
Georges Basile Stavracas Neto
93542e8853
timeline: Add already cached events to new subscribers
2020-04-01 23:10:01 -03:00
Georges Basile Stavracas Neto
cfa4b56a05
timeline: Implement processing changes in idle
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
7a0b55aa61
timeline: Replace useless function by GcalEvent counterpart
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
84eeb58804
Move Shell search to GcalShellSearchProvider
...
Add a custom timeline to GcalShellSearchProvier and use
it to gather events.
Do a massive cleanup of unused APIs as well.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
72952e42cb
timeline: Add API to gather events at a certain range
...
Will be used by the month popover.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
2d46e673ca
timeline: Add filtering API
...
This will be used by the search.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
3692a0ccf6
Introduce the new calendar monitoring API
...
It is, as expected, heavily inspired by the ECalDataModel code,
except it uses GDateTime, is timezone aware, and can handle all
day events correctly.
2020-04-01 21:06:51 -03:00