[gnome-calendar] timeline: Respond well to subscriber removal



commit aaab4af2822b1880addaa4c7394e14ffa8e24ecf
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]