diff options
author | Kevin <chenkevinh11@gmail.com> | 2020-09-02 17:37:39 -0700 |
---|---|---|
committer | Kevin <chenkevinh11@gmail.com> | 2020-09-02 17:37:39 -0700 |
commit | 5b493ef334c32a7074e29b68f779f81cbdf6596c (patch) | |
tree | 193a6ebf7e0820a3fbb54f2f42487991b8321144 /app/src/event_manager.c | |
parent | 068626d1a74d3883a8ccb2cd514a217098e99420 (diff) | |
parent | d53a8e36ca17f988b7b1df754478baf2e87597e6 (diff) |
Merge branch 'main' into docs/encoders
Sync with upstream
Diffstat (limited to 'app/src/event_manager.c')
-rw-r--r-- | app/src/event_manager.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/app/src/event_manager.c b/app/src/event_manager.c index c405176..47ad6b7 100644 --- a/app/src/event_manager.c +++ b/app/src/event_manager.c @@ -71,7 +71,23 @@ int zmk_event_manager_raise_after(struct zmk_event_header *event, const struct z return -EINVAL; } +int zmk_event_manager_raise_at(struct zmk_event_header *event, const struct zmk_listener *listener) +{ + 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(struct zmk_event_header *event) { return zmk_event_manager_handle_from(event, event->last_listener_index + 1); -}
\ No newline at end of file +} |