diff options
Diffstat (limited to 'src/events.cc')
| -rw-r--r-- | src/events.cc | 10 |
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); } |
