[gnome-calendar/gnome-3-36] timeline: Respond well to subscriber removal
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar/gnome-3-36] timeline: Respond well to subscriber removal
- Date: Thu, 2 Apr 2020 02:16:17 +0000 (UTC)
commit c4cc19da9486121a26542b14368cd958660c345f
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Wed Apr 1 23:08:54 2020 -0300
timeline: Respond well to subscriber removal
src/core/gcal-calendar-monitor.c | 13 +++++++------
src/core/gcal-timeline.c | 5 ++++-
2 files changed, 11 insertions(+), 7 deletions(-)
---
diff --git a/src/core/gcal-calendar-monitor.c b/src/core/gcal-calendar-monitor.c
index 8055eead..f45ad148 100644
--- a/src/core/gcal-calendar-monitor.c
+++ b/src/core/gcal-calendar-monitor.c
@@ -615,8 +615,11 @@ create_view (GcalCalendarMonitor *self)
g_assert (self->cancellable == NULL);
self->cancellable = g_cancellable_new ();
- g_assert (self->shared.range_start != NULL);
- g_assert (self->shared.range_end != NULL);
+ if (!self->shared.range_start || !self->shared.range_end)
+ {
+ g_mutex_unlock (&self->shared.mutex);
+ GCAL_RETURN ();
+ }
filter = build_subscriber_filter (self->shared.range_start, self->shared.range_end, self->shared.filter);
@@ -839,7 +842,7 @@ remove_events_outside_range (GcalCalendarMonitor *self,
g_hash_table_iter_init (&iter, self->events);
while (g_hash_table_iter_next (&iter, NULL, (gpointer*) &event))
{
- if (gcal_event_is_within_range (event, range_start, range_end))
+ if (range_start && range_end && gcal_event_is_within_range (event, range_start, range_end))
continue;
g_object_ref (event);
@@ -1140,9 +1143,7 @@ gcal_calendar_monitor_set_range (GcalCalendarMonitor *self,
gboolean range_changed;
g_return_if_fail (GCAL_IS_CALENDAR_MONITOR (self));
- g_return_if_fail (range_start != NULL);
- g_return_if_fail (range_end != NULL);
- g_return_if_fail (g_date_time_compare (range_start, range_end) < 0);
+ g_return_if_fail ((!range_start && !range_end) || g_date_time_compare (range_start, range_end) < 0);
GCAL_ENTRY;
diff --git a/src/core/gcal-timeline.c b/src/core/gcal-timeline.c
index f8a5ec87..d630e6a4 100644
--- a/src/core/gcal-timeline.c
+++ b/src/core/gcal-timeline.c
@@ -981,7 +981,6 @@ gcal_timeline_remove_subscriber (GcalTimeline *self,
GcalTimelineSubscriber *subscriber)
{
g_return_if_fail (GCAL_IS_TIMELINE (self));
- g_return_if_fail (GCAL_IS_TIMELINE_SUBSCRIBER (subscriber));
GCAL_ENTRY;
@@ -993,6 +992,10 @@ gcal_timeline_remove_subscriber (GcalTimeline *self,
g_signal_handlers_disconnect_by_func (subscriber, on_subscriber_range_changed_cb, self);
g_hash_table_remove (self->subscribers, subscriber);
+ /* If all subscribers were removed, reset the complete counter */
+ if (g_hash_table_size (self->subscribers) == 0)
+ reset_completed_calendars (self);
+
update_range (self);
GCAL_EXIT;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]