audio_core: sink_stream: Hold the suspend lock when process is stalled.

- Prevents us from clashing with other callers trying to un/stall.
This commit is contained in:
bunnei
2022-11-29 20:32:06 -08:00
parent 8f6245be9a
commit 8fd4e44014
2 changed files with 9 additions and 7 deletions

View File

@ -266,19 +266,20 @@ void SinkStream::ProcessAudioOutAndRender(std::span<s16> output_buffer, std::siz
}
void SinkStream::Stall() {
if (stalled) {
std::scoped_lock lk{stall_guard};
if (stalled_lock) {
return;
}
stalled = true;
system.StallProcesses();
stalled_lock = system.StallProcesses();
}
void SinkStream::Unstall() {
if (!stalled) {
std::scoped_lock lk{stall_guard};
if (!stalled_lock) {
return;
}
system.UnstallProcesses();
stalled = false;
stalled_lock.unlock();
}
} // namespace AudioCore::Sink