From 13a516609716bb68ada905c1172b4b530ba17317 Mon Sep 17 00:00:00 2001 From: Alessandro Genova Date: Fri, 12 Sep 2025 21:41:59 -0400 Subject: [PATCH] use __builtin_ctz when processing pending events --- movement.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/movement.c b/movement.c index 14944bea..c1a5d087 100644 --- a/movement.c +++ b/movement.c @@ -1223,12 +1223,11 @@ bool app_loop(void) { // Consume all the pending events movement_event_type_t event_type = 0; while (pending_events) { - if (pending_events & 1) { - event.event_type = event_type; - can_sleep = wf->loop(event, watch_face_contexts[movement_state.current_face_idx]) && can_sleep; - } - pending_events = pending_events >> 1; - event_type++; + uint8_t next_event = __builtin_ctz(pending_events); + event.event_type = event_type + next_event; + can_sleep = wf->loop(event, watch_face_contexts[movement_state.current_face_idx]) && can_sleep; + pending_events = pending_events >> (next_event + 1); + event_type = event_type + next_event + 1; } // handle top-of-minute tasks, if the alarm handler told us we need to