diff options
author | Okke Formsma <okke@formsma.nl> | 2020-09-02 15:11:56 +0200 |
---|---|---|
committer | Okke Formsma <okke@formsma.nl> | 2020-09-02 15:26:06 +0200 |
commit | c5ca66441172114b57ca7f7b27d13d0d342d4fcc (patch) | |
tree | 5e964698150ff42a2b4075731f34d6a009d43556 /app/src/event_manager.c | |
parent | f6a9c1ee57e9e8b5a6d2fd7cd5a60c32138a4404 (diff) |
some fixes based on feedback
Diffstat (limited to 'app/src/event_manager.c')
-rw-r--r-- | app/src/event_manager.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/app/src/event_manager.c b/app/src/event_manager.c index 2f423fc..47ad6b7 100644 --- a/app/src/event_manager.c +++ b/app/src/event_manager.c @@ -71,13 +71,23 @@ int zmk_event_manager_raise_after(struct zmk_event_header *event, const struct z return -EINVAL; } -int zmk_event_manager_release(struct zmk_event_header *event) +int zmk_event_manager_raise_at(struct zmk_event_header *event, const struct zmk_listener *listener) { - return zmk_event_manager_handle_from(event, event->last_listener_index + 1); -} + u8_t len = __event_subscriptions_end - __event_subscriptions_start; + for (int i = 0; i < len; i++) { + struct zmk_event_subscription *ev_sub = __event_subscriptions_start + i; + + if (ev_sub->event_type == event->event && ev_sub->listener == listener) { + return zmk_event_manager_handle_from(event, i); + } + } + LOG_WRN("Unable to find where to raise this event"); + + return -EINVAL; +} -int zmk_event_manager_release_again(struct zmk_event_header *event) +int zmk_event_manager_release(struct zmk_event_header *event) { - return zmk_event_manager_handle_from(event, event->last_listener_index); -}
\ No newline at end of file + return zmk_event_manager_handle_from(event, event->last_listener_index + 1); +} |