30 #include <cx/linked_list.h> |
30 #include <cx/linked_list.h> |
31 #include "../util/atomic.h" |
31 #include "../util/atomic.h" |
32 |
32 |
33 #include "event.h" |
33 #include "event.h" |
34 |
34 |
35 CxMap *event_handler_map = NULL; |
35 static CxMap *event_handler_map = NULL; |
36 int numevhandlers = 0; |
36 int numevhandlers = 0; |
37 |
37 |
38 EVHandler *default_event_handler = NULL; |
38 EVHandler *default_event_handler = NULL; |
39 |
39 |
40 EVHandler *last_handler_c = NULL; |
40 EVHandler *last_handler_c = NULL; |
74 last_handler_c = e; |
74 last_handler_c = e; |
75 numevhandlers++; |
75 numevhandlers++; |
76 } |
76 } |
77 |
77 |
78 return ret; |
78 return ret; |
|
79 } |
|
80 |
|
81 void shutdown_eventhandlers_wait(void) { |
|
82 CxIterator i = cxMapIteratorValues(event_handler_map); |
|
83 cx_foreach(EVHandler *, e, i) { |
|
84 evhandler_shutdown(e); |
|
85 } |
|
86 |
|
87 i = cxMapIteratorValues(event_handler_map); |
|
88 cx_foreach(EVHandler *, e, i) { |
|
89 evhandler_wait_and_destroy(e); |
|
90 } |
|
91 |
|
92 cxMapDestroy(event_handler_map); |
79 } |
93 } |
80 |
94 |
81 void evhandler_shutdown(EVHandler *h) { |
95 void evhandler_shutdown(EVHandler *h) { |
82 for(int i=0;i<h->numins;i++) { |
96 for(int i=0;i<h->numins;i++) { |
83 ev_instance_shutdown(h->instances[i]); |
97 ev_instance_shutdown(h->instances[i]); |