mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-28 08:26: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
22 lines
516 B
Makefile
22 lines
516 B
Makefile
include $(top_srcdir)/glib.mk
|
|
|
|
noinst_LTLIBRARIES += libkqueue.la
|
|
|
|
libkqueue_la_SOURCES = \
|
|
gkqueuefilemonitor.c \
|
|
kqueue-helper.c \
|
|
kqueue-helper.h \
|
|
kqueue-missing.c \
|
|
dep-list.c \
|
|
dep-list.h \
|
|
$(NULL)
|
|
|
|
libkqueue_la_CFLAGS = \
|
|
$(GLIB_HIDDEN_VISIBILITY_CFLAGS) \
|
|
-DG_LOG_DOMAIN=\"GLib-GIO\" \
|
|
$(gio_INCLUDES) \
|
|
$(GLIB_DEBUG_FLAGS) \
|
|
-DGIO_MODULE_DIR=\"$(GIO_MODULE_DIR)\" \
|
|
-DGIO_COMPILATION \
|
|
-DG_DISABLE_DEPRECATED
|