2026-09-23 01:28:59

Signed-off-by: lizzie <lizzie@eden-emu.dev>
This commit is contained in:
lizzie
2026-09-23 01:28:59 +00:00
parent c52a7be00f
commit 8ddd0f3cc4
4 changed files with 17 additions and 7 deletions
+1
View File
@@ -20,6 +20,7 @@ ADSP::ADSP(Core::System& system, Sink::Sink& sink) {
}
void ADSP::NotifyShutdown() {
audio_renderer->NotifyShutdown();
opus_decoder->NotifyShutdown();
}
@@ -41,6 +41,14 @@ void AudioRenderer::Start() {
running = true;
}
void AudioRenderer::NotifyShutdown() {
if (main_thread.joinable()) {
main_thread.request_stop();
mailbox.Send(Direction::DSP, Message::Shutdown);
main_thread.join();
}
}
void AudioRenderer::Stop() {
if (!running) {
return;
@@ -71,13 +79,12 @@ void AudioRenderer::Signal() {
Send(Direction::DSP, Message::Render);
}
void AudioRenderer::Wait() {
auto msg = Receive(Direction::Host);
void AudioRenderer::Wait(std::stop_token stop_token) {
auto msg = mailbox.Receive(Direction::Host, stop_token);
if (msg != Message::RenderResponse) {
LOG_ERROR(Service_Audio,
"Did not receive the expected render response from the AudioRenderer! Expected "
"{}, got {}",
Message::RenderResponse, msg);
"Did not receive the expected render response from the AudioRenderer! Expected "
"{}, got {}", Message::RenderResponse, msg);
}
PostDSPClearCommandBuffer();
}
@@ -63,13 +63,15 @@ public:
*/
void Start();
void NotifyShutdown();
/**
* Stop the AudioRenderer.
*/
void Stop();
void Signal();
void Wait();
void Wait(std::stop_token stop_token);
void Send(Direction dir, u32 message);
u32 Receive(Direction dir);
+1 -1
View File
@@ -36,7 +36,7 @@ void SystemManager::InitializeUnsafe() {
system->SendCommandToDsp();
}
audio_renderer.Signal();
audio_renderer.Wait();
audio_renderer.Wait(stop_token);
}
});
}