diff -r e0a6b761ddbc -r 66b0accda0a8 src/server/daemon/event.c --- a/src/server/daemon/event.c Sat Aug 24 12:13:01 2024 +0200 +++ b/src/server/daemon/event.c Sat Aug 24 18:34:13 2024 +0200 @@ -32,7 +32,7 @@ #include "event.h" -CxMap *event_handler_map = NULL; +static CxMap *event_handler_map = NULL; int numevhandlers = 0; EVHandler *default_event_handler = NULL; @@ -78,6 +78,20 @@ return ret; } +void shutdown_eventhandlers_wait(void) { + CxIterator i = cxMapIteratorValues(event_handler_map); + cx_foreach(EVHandler *, e, i) { + evhandler_shutdown(e); + } + + i = cxMapIteratorValues(event_handler_map); + cx_foreach(EVHandler *, e, i) { + evhandler_wait_and_destroy(e); + } + + cxMapDestroy(event_handler_map); +} + void evhandler_shutdown(EVHandler *h) { for(int i=0;inumins;i++) { ev_instance_shutdown(h->instances[i]);