core/calendar-monitor: Replace signals by callbacks

This should save quite some resources when manipulating events.
Signals are relatively expensive, and 2 pointer chases are
definitely better than a global lock + FFI stashing + signal
manipulation.
This commit is contained in:
Georges Basile Stavracas Neto
2023-08-18 10:41:18 -03:00
parent ec840fbab9
commit 60223adc5c
3 changed files with 207 additions and 156 deletions
+18 -1
View File
@@ -30,7 +30,24 @@ G_BEGIN_DECLS
#define GCAL_TYPE_CALENDAR_MONITOR (gcal_calendar_monitor_get_type())
G_DECLARE_FINAL_TYPE (GcalCalendarMonitor, gcal_calendar_monitor, GCAL, CALENDAR_MONITOR, GObject)
GcalCalendarMonitor* gcal_calendar_monitor_new (GcalCalendar *calendar);
typedef struct {
void (*add_events) (GcalCalendarMonitor *self,
GPtrArray *events,
gpointer user_data);
void (*update_events) (GcalCalendarMonitor *self,
GPtrArray *old_events,
GPtrArray *events,
gpointer user_data);
void (*remove_events) (GcalCalendarMonitor *self,
GPtrArray *events,
gpointer user_data);
} GcalCalendarMonitorListener;
GcalCalendarMonitor* gcal_calendar_monitor_new (GcalCalendar *calendar,
const GcalCalendarMonitorListener *listener,
gpointer user_data);
void gcal_calendar_monitor_set_range (GcalCalendarMonitor *self,
GcalRange *range);