aboutsummaryrefslogtreecommitdiffstats
path: root/quantum/audio
diff options
context:
space:
mode:
authorJoel Challis2025-07-14 14:53:57 +0200
committerGitHub2025-07-14 14:53:57 +0200
commit20555f9a3366abf9d4246e00ad032590ff16236a (patch)
treec78a2a08206023b1eed13883a97681da3b2c3a41 /quantum/audio
parent56ad3a5f435b57605388ad986e85ca6e4d607eb2 (diff)
Relocate `AUDIO_INIT_DELAY` implementation (#25491)
Diffstat (limited to 'quantum/audio')
-rw-r--r--quantum/audio/audio.c19
-rw-r--r--quantum/audio/audio.h6
2 files changed, 24 insertions, 1 deletions
diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c
index 247b737331..461ec89544 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 647744a686..a41814d0f8 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