summaryrefslogtreecommitdiff
path: root/src/events.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/events.cc')
-rw-r--r--src/events.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/events.cc b/src/events.cc
index 1795c85..755c034 100644
--- a/src/events.cc
+++ b/src/events.cc
@@ -8,15 +8,19 @@ static inline window_id_t wayc_eventloop_genid(struct eventloop_s *loop) {
return loop->winid++;
}
-bool wayc_eventloop_init(struct eventloop_s *loop) {
+bool wayc_eventloop_init(struct eventloop_s *loop, event_handler_t handler) {
wayc_notnull(loop);
+ wayc_notnull(handler);
+
memset(loop, 0, sizeof(*loop));
if (!wayc_wlstate_init(&loop->state))
return false;
loop->events = WAYC_VEC_INIT(struct event_s);
+ loop->handler = handler;
loop->running = true;
+
wayc_hashmap_init(&loop->windows);
return true;
@@ -55,4 +59,8 @@ void wayc_eventloop_update(struct eventloop_s *loop) {
loop->running = false;
wayc_wlstate_update(&loop->state);
+
+ struct event_s event;
+ while (wayc_vec_pop(&loop->events, &event))
+ loop->handler(loop, &event);
}