mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-27 07:56:14 +01:00
aa39a0557c
- Stop using a custom thread for listening to kqueue(2) events. Instead call kevent(2) in non blocking mode in a monitor callback. Under the hood poll(2) is used to figure out if new events are available. - Do not use a socketpair with a custom protocol requiring 2 supplementary context switches per event to commicate between multiple threads. Calling kevent(2), in non blocking mode, to add/remove events is fine from any context. - Add kqueue(2) events without the EV_ONESHOT flag. This removes a race where some notifications were lost because events had to be re-added for every new notification. - Get rid of the global hash table and its associated lock and races. Use the 'cookie' argument of kevent(2) to pass the associated descriptor when registering an event. - Fix _kh_file_appeared_cb() by properly passing a monitor instead of a source to g_file_monitor_emit_event(). - Properly refcount sources. - Remove a lot of abstraction making it harder to fix the remaining issues. https://bugzilla.gnome.org/show_bug.cgi?id=739424
13 lines
299 B
Meson
13 lines
299 B
Meson
kqueue_sources = [
|
|
'gkqueuefilemonitor.c',
|
|
'kqueue-helper.c',
|
|
'kqueue-missing.c',
|
|
'dep-list.c',
|
|
]
|
|
|
|
kqueue_lib = static_library('kqueue',
|
|
sources : kqueue_sources,
|
|
include_directories : [configinc, glibinc, gmoduleinc],
|
|
pic : true,
|
|
c_args : [ '-DG_DISABLE_DEPRECATED' ] + gio_c_args)
|