Michael Catanzaro c2c89b667e gcal-timeline: never reset completed_calendars
Since 78cb11c64d, GcalCalendarMonitor now
notifies when a completed calendar transitions to incomplete, and
GcalTimeline decrements its completed_calendars counter. But we forgot
to remove the code that resets completed_calendars when previously
needed. That's not required anymore, because we can trust
GcalCalendarMonitor to do the right thing.

In my case, I have 5 calendars enabled and 6 total. When starting
gnome-calendar, all 5 are successively completed, and
completed_calendars increments from 0 -> 1 -> 2 -> 3 -> 4 -> 5. Then,
when transitioning month view from January 2020 to December 2019, we
call reset_completed_calendars() and completed_calenders gets clobbered
to 0. Then it decrements from 0 -> -1 -> -2 -> -3 -> -4 -> -5 as the
GcalCalendarMonitors notify that they are no longer completed. Well,
that is what would happen, if it didn't crash when decrementing to -1.
We assert -1 <= 6 (the total number of calendars) and crash because -1
gets promoted to a huge unsigned int, since we're comparing signed to
unsigned. (That crash would have been avoided if we used
-Wsign-compare, although that warning would not have caught the logic
problem.)

Anyway, since GcalMonitor now notifies when calendars are no longer
complete, it is safe to simply remove reset_completed_calendars().
GcalTimeline will still notify if it needs to change its own complete
property (in on_calendar_monitor_completed_cb).

Fixes #567
Fixes #636
Fixes #638
Fixes #647
Fixes #650
2020-10-14 09:13:12 -05:00
2020-09-16 15:24:46 +00:00
2020-09-12 12:49:29 -03:00
2020-10-11 14:27:13 +00:00
2020-06-15 13:07:48 -03:00
2019-05-04 12:05:39 -03:00
2018-07-31 12:35:56 -03:00
2018-02-23 16:11:36 -03:00
2012-04-25 23:56:34 -04:00
2018-01-28 00:32:07 -02:00
2020-09-16 15:24:46 +00:00
2020-09-12 12:49:29 -03:00
2019-09-13 21:13:35 +00:00
2018-01-16 08:32:43 -02:00

GNOME Calendar

GNOME Calendar is a simple and beautiful calendar application for GNOME. We give a lot of attention to details, and as such, design is an essential and ongoing effort.

Flatpak

S
Description
No description provided
Readme
19 MiB
Languages
C 97.6%
Meson 1.2%
CSS 0.7%
Python 0.3%
Shell 0.2%