diff --git a/app/src/rgb_underglow.c b/app/src/rgb_underglow.c index 7b649174..c31989f1 100644 --- a/app/src/rgb_underglow.c +++ b/app/src/rgb_underglow.c @@ -302,7 +302,7 @@ int zmk_rgb_underglow_get_state(bool *on_off) { return 0; } -int zmk_rgb_underglow_on() { +static int zmk_rgb_underglow_on_immediate() { if (!led_strip) return -ENODEV; @@ -319,10 +319,15 @@ int zmk_rgb_underglow_on() { state.animation_step = 0; k_timer_start(&underglow_tick, K_NO_WAIT, K_MSEC(50)); + return 0; +} + +int zmk_rgb_underglow_on() { + zmk_rgb_underglow_on_immediate(); return zmk_rgb_underglow_save_state(); } -int zmk_rgb_underglow_off() { +static int zmk_rgb_underglow_off_immediate() { if (!led_strip) return -ENODEV; @@ -344,6 +349,11 @@ int zmk_rgb_underglow_off() { k_timer_stop(&underglow_tick); state.on = false; + return 0; +} + +int zmk_rgb_underglow_off() { + zmk_rgb_underglow_off_immediate(); return zmk_rgb_underglow_save_state(); } @@ -468,11 +478,11 @@ static int rgb_underglow_auto_state(bool *prev_state, bool new_state) { if (new_state) { state.on = *prev_state; *prev_state = false; - return zmk_rgb_underglow_on(); + return zmk_rgb_underglow_on_immediate(); } else { state.on = false; *prev_state = true; - return zmk_rgb_underglow_off(); + return zmk_rgb_underglow_off_immediate(); } }