From bd615cf125939c760976e22cbee96c7293c69f35 Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Wed, 23 Sep 2026 16:54:55 -0400 Subject: [PATCH] FS#13996: Have audio_hard_stop() kill the PCM output path entirely We already shut down the playback path and the voice path, but that doesn't necessarily mean the PCM hardware is idle. Add a call to pcm_play_stop() to ensure the PCM sink is completely idle. This will prevent a badly-timed callback from firing during a ROLO operation. Change-Id: I1eb8c105895fb47bc3d0af91b4d87345f5399aa4 --- apps/playback.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/playback.c b/apps/playback.c index 29f06dcb69..abb50345f7 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -27,6 +27,7 @@ #include "core_alloc.h" #include "sound.h" #include "pcm_sink.h" +#include "pcm-internal.h" #include "codecs.h" #include "codec_thread.h" #include "voice_thread.h" @@ -3996,8 +3997,11 @@ void audio_hard_stop(void) LOGFQUEUE("audio >| audio Q_AUDIO_STOP: 1"); audio_queue_send(Q_AUDIO_STOP, 1); #ifdef PLAYBACK_VOICE + /* Stop voice */ voice_stop(); #endif + /* Stop PCM */ + pcm_play_stop(); audiobuf_handle = core_free(audiobuf_handle); }