Georges Basile Stavracas Neto
cc6736a16f
core/calendar-monitor: Implement GListModel
...
This uses GcalEventList to as the backing store of events, and proxies
the "items-changed" signal.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:49 +00:00
Georges Basile Stavracas Neto
9eea2ee985
core/calendar-monitor: Use NULL-terminated arrays
...
This will help with next commits
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742 >
2026-05-03 16:57:49 +00:00
Federico Mena Quintero
d1499329cc
core/calendar-monitor: Replace a manual GRWLockWriterLocker with G_RW_LOCK_WRITER_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
cf48f79f36
core/calendar-monitor: Replace a manual GRWLockWriterLocker with G_RW_LOCK_WRITER_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
26c3f83e3c
core/calendar-monitor: Replace a manual GRWLockWriterLocker with G_RW_LOCK_WRITER_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
e2dc3460a6
core/calendar-monitor: Replace a manual GRWLockWriterLocker with G_RW_LOCK_WRITER_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
1d5fd3eec9
core/calendar-monitor: Replace a manual GRWLockWriterLocker with G_RW_LOCK_WRITER_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
21b7607c39
core/calendar-monitor: Replace a manual GRWLockReaderLocker with G_RW_LOCK_READER_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Federico Mena Quintero
f55f42b81c
core/calendar-monitor: Replace a manual GRWLockReaderLocker with G_RW_LOCK_READER_AUTO_LOCK()
...
This takes care of static-scan's warning about a variable being set
but never read.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581 >
2025-05-28 18:08:54 +00:00
Georges Basile Stavracas Neto
6a9d5a75fa
core/calendar-monitor: Remove property descriptions
...
They're unnecessary.
2025-05-21 01:38:00 -03:00
Georges Basile Stavracas Neto
96625ec595
core/calendar-monitor: Protect against NULL range
2023-09-28 11:33:02 -03:00
Georges Basile Stavracas Neto
439b46af89
core/calendar-monitor: Remove g_autoptr from a variable
...
g_hash_table_lookup() is not transfer-full, so this g_autoptr + the
g_hash_table_remove() call end up double-unreffing the event, which
causes a crash.
Remove g_autoptr from the variable.
2023-09-13 17:51:34 -03:00
Georges Basile Stavracas Neto
07c5b6280a
core/calendar-monitor: Transfer event ownership properly
...
g_steal_pointer() is not enough, since the event is not declared
with g_autoptr.
Use g_object_ref().
Fixes: f7ee9279ad
Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1097
2023-09-13 14:18:36 -03:00
Georges Basile Stavracas Neto
f6c4fe108d
core/calendar-monitor: Join view thread in dispose
...
Joining the calendar view thread in finalize is too late; dispose
is an earlier phase, and recoverable.
Do that.
Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1085
2023-08-25 17:18:16 -03:00
Georges Basile Stavracas Neto
d8742df706
core/calendar-monitor: Remove unnecessary g_main_loop_quit()
2023-08-23 11:25:59 -03:00
Georges Basile Stavracas Neto
f16b0a1563
core/calendar-monitor: Assert more startup conditions
...
The calendar view thread can start spinning its own mainloop
before g_thread_new() returns, and in that case we have a NULL
thread.
Check that either the GThread is what we expect it to be, OR,
the thread is NULL and there are no messages in the queue.
2023-08-23 10:17:01 -03:00
Georges Basile Stavracas Neto
42de771c24
core/calendar-monitor: Join thread before NULLifying it
...
This allows the threading macros to compare against the correct
value.
2023-08-23 09:33:01 -03:00
Georges Basile Stavracas Neto
9e341d87e4
core/monitor: Assert we're in the right thread
...
Right now everything works as expected, but this should catch cases
where we're running functions on the wrong thread.
2023-08-22 17:25:56 -03:00
Georges Basile Stavracas Neto
60223adc5c
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.
2023-08-18 10:41:18 -03:00
Georges Basile Stavracas Neto
3dc669f2ec
calendar-monitor: Set the right field when removing events
2023-08-07 14:51:52 +00:00
Georges Basile Stavracas Neto
2b78d57459
calendar-monitor: Don't replace new events
...
If an event is already present in the cache, don't attempt
to insert it, which replaces the available event instance
with the new one.
2023-08-02 11:05:06 -03:00
Georges Basile Stavracas Neto
9c21dff77d
calendar-monitor: Improve lifecycle of updated events
...
Keep a ref alive while updating the old event, as it may be
destroyed during signal emission.
2023-08-02 11:05:00 -03:00
Georges Basile Stavracas Neto
745e022aa0
calendar-monitor: Don't remove events unnecessarily
...
Apparently I never properly implemented range comparison in
remove_events_outside_range(). Do so now.
This makes the infinite scrolling month view stop flickering
events when changing weeks.
2023-08-02 11:04:52 -03:00
Georges Basile Stavracas Neto
f7ee9279ad
calendar-monitor: Operate in batches
...
Instead of smashing the main thread's mainloop with
potentially hundreds or even thousands of idles that
add, remove, or update individual events, pass arrays
of events around.
2023-08-02 11:04:40 -03:00
Georges Basile Stavracas Neto
8b403f10ef
calendar-monitor: Use a GPtrArray for accumulated events
...
This will ease future changes.
2023-08-02 11:04:37 -03:00
Georges Basile Stavracas Neto
0a0128bf4c
core/calendar-monitor: Keep event alive while removing it
...
This might be the last reference to it, so keep it alive while
the signal is being emitted.
2023-03-16 12:27:47 +00:00
Georges Basile Stavracas Neto
a0963c0d36
calendar-monitor: Properly update and delete recurrent events
...
When we receive the 'objects-modified' signal, we get components
that may represent main events. We also may receive components
that have no recurrency because they were just changed from being
recurrent to non-recurrent.
We need to handle all these cases properly.
If the event has no recurrency set, remove any potential old
recurrence instance lingering around. If we're changing an event
with recurrency, make sure the recurrency instances are in sync
with the new recurrency.
Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/881
(or so I hope.)
2022-10-17 23:37:13 -03:00
Georges Basile Stavracas Neto
16b9337e3f
calendar-monitor: Move events hash table to shared section
...
We'll start accessing the hash table from multiple threads, so
it must be in the shared section of the structure, and it must
be encapsulated by locking.
2022-10-17 23:37:13 -03:00
Georges Basile Stavracas Neto
791d443c54
calendar-monitor: Simplify locking code a bit
...
Use GRWLock*Locker to simplify the locking code in a couple of
places.
2022-10-17 23:37:13 -03:00
Georges Basile Stavracas Neto
5f67c55304
calendar-monitor: Replace mutex by a rw-lock
...
This will be more appropriate once we start accessing the events
hash table from the monitor thread.
2022-10-17 23:37:13 -03:00
Georges Basile Stavracas Neto
baacf696a6
calendar-monitor: Shuffle some variables around
...
Move them to where they're used.
2022-10-17 23:37:13 -03:00
Yuri Edward
78cb11c64d
calendar-monitor: Turn "completed" signal into a boolean property
...
And make GcalTimeline decrease the completed calendars counter when
any GcalCalendarMonitor goes from complete to incomplete.
Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/625
2020-08-17 15:59:33 -03:00
Georges Basile Stavracas Neto
e5986a05c1
calendar-monitor: Use inclusive end date for ECalClientView
...
May prevent a few events from being transmitted.
2020-04-16 16:31:36 -03: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
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
aaab4af282
timeline: Respond well to subscriber removal
2020-04-01 23:10:01 -03:00
Michael Catanzaro
164ec8620b
calendar-monitor: Fix critical in finalize
...
self->thread can be NULL if gcal_calendar_monitor_set_range() was never
called prior to finalize. This is fine, so just check for NULL here
using g_clear_pointer().
2020-04-02 01:54:33 +00:00
Michael Catanzaro
e816657116
calendar-monitor: fix unused variable warning
...
Fixes:
[43/52] Compiling C object 'src/25a6634@@gcal-private@sta/core_gcal-calendar-monitor.c.o'
../../../../Projects/gnome-calendar/src/core/gcal-calendar-monitor.c: In function ‘on_client_view_objects_added_cb’:
../../../../Projects/gnome-calendar/src/core/gcal-calendar-monitor.c:402:16: warning: variable ‘old_size’ set but not used [-Wunused-but-set-variable]
402 | gint old_size;
| ^~~~~~~~
2020-04-01 20:30:06 -05:00
Georges Basile Stavracas Neto
d606bafd15
calendar-monitor: Properly cleanup ECalComponents
...
Unfortunately, they do not have autoptr functions.
2020-04-01 21:08:21 -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
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