From 20555f9a3366abf9d4246e00ad032590ff16236a Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Mon, 14 Jul 2025 13:53:57 +0100 Subject: [PATCH] Relocate `AUDIO_INIT_DELAY` implementation (#25491) --- quantum/audio/audio.c | 19 +++++++++++++++++++ quantum/audio/audio.h | 6 +++++- quantum/keyboard.c | 20 ++------------------ 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index 247b7373313..461ec895449 100644 --- a/quantum/audio/audio.c +++ b/quantum/audio/audio.c @@ -183,6 +183,25 @@ void audio_init(void) { #endif } +void audio_task(void) { +#ifdef AUDIO_INIT_DELAY + // startup song potentially needs to be run a little bit + // after keyboard startup, or else they will not work correctly + // because of interaction with the USB device state, which + // may still be in flux... + static bool delayed_tasks_run = false; + static uint16_t delayed_task_timer = 0; + if (!delayed_tasks_run) { + if (!delayed_task_timer) { + delayed_task_timer = timer_read(); + } else if (timer_elapsed(delayed_task_timer) > 300) { + audio_startup(); + delayed_tasks_run = true; + } + } +#endif +} + void audio_startup(void) { if (audio_config.enable) { PLAY_SONG(startup_song); diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index 647744a686c..a41814d0f8c 100644 --- a/quantum/audio/audio.h +++ b/quantum/audio/audio.h @@ -69,7 +69,11 @@ void eeconfig_update_audio_current(void); * @post audio system (and hardware) initialized and ready to play tones */ void audio_init(void); -void audio_startup(void); + +/** + * \brief Handle various subsystem background tasks. + */ +void audio_task(void); /** * @brief en-/disable audio output, save this choice to the eeprom diff --git a/quantum/keyboard.c b/quantum/keyboard.c index c1a6d444a5a..bf4890a51db 100644 --- a/quantum/keyboard.c +++ b/quantum/keyboard.c @@ -648,24 +648,8 @@ void quantum_task(void) { if (!is_keyboard_master()) return; #endif -#if defined(AUDIO_ENABLE) && defined(AUDIO_INIT_DELAY) - // There are some tasks that need to be run a little bit - // after keyboard startup, or else they will not work correctly - // because of interaction with the USB device state, which - // may still be in flux... - // - // At the moment the only feature that needs this is the - // startup song. - static bool delayed_tasks_run = false; - static uint16_t delayed_task_timer = 0; - if (!delayed_tasks_run) { - if (!delayed_task_timer) { - delayed_task_timer = timer_read(); - } else if (timer_elapsed(delayed_task_timer) > 300) { - audio_startup(); - delayed_tasks_run = true; - } - } +#ifdef AUDIO_ENABLE + audio_task(); #endif #if defined(AUDIO_ENABLE) && !defined(NO_MUSIC_MODE)