refactor(core): make the event manager a bit easier to read

This commit is contained in:
Okke Formsma 2021-02-27 22:25:07 +01:00 committed by Pete Johanson
parent c01243d1c6
commit 8ebe0cd0c8

View file

@ -22,24 +22,25 @@ int zmk_event_manager_handle_from(zmk_event_t *event, uint8_t start_index) {
uint8_t len = __event_subscriptions_end - __event_subscriptions_start; uint8_t len = __event_subscriptions_end - __event_subscriptions_start;
for (int i = start_index; i < len; i++) { for (int i = start_index; i < len; i++) {
struct zmk_event_subscription *ev_sub = __event_subscriptions_start + i; struct zmk_event_subscription *ev_sub = __event_subscriptions_start + i;
if (ev_sub->event_type == event->event) { if (ev_sub->event_type != event->event) {
ret = ev_sub->listener->callback(event); continue;
if (ret < 0) { }
LOG_DBG("Listener returned an error: %d", ret); ret = ev_sub->listener->callback(event);
goto release; switch (ret) {
} else if (ret > 0) { case ZMK_EV_EVENT_BUBBLE:
switch (ret) { continue;
case ZMK_EV_EVENT_HANDLED: case ZMK_EV_EVENT_HANDLED:
LOG_DBG("Listener handled the event"); LOG_DBG("Listener handled the event");
ret = 0; ret = 0;
goto release; goto release;
case ZMK_EV_EVENT_CAPTURED: case ZMK_EV_EVENT_CAPTURED:
LOG_DBG("Listener captured the event"); LOG_DBG("Listener captured the event");
event->last_listener_index = i; event->last_listener_index = i;
// Listeners are expected to free events they capture // Listeners are expected to free events they capture
return 0; return 0;
} default:
} LOG_DBG("Listener returned an error: %d", ret);
goto release;
} }
} }