summaryrefslogtreecommitdiff
path: root/app/src/event_manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/event_manager.c')
-rw-r--r--app/src/event_manager.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/app/src/event_manager.c b/app/src/event_manager.c
index 3edba10..5d2e9ed 100644
--- a/app/src/event_manager.c
+++ b/app/src/event_manager.c
@@ -55,6 +55,22 @@ int zmk_event_manager_raise(struct zmk_event_header *event)
return zmk_event_manager_handle_from(event, 0);
}
+int zmk_event_manager_raise_after(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+1);
+ }
+ }
+
+ LOG_WRN("Unable to find where to raise this after 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);