summaryrefslogtreecommitdiff
path: root/src/audio_core/out
diff options
context:
space:
mode:
authorGravatar Kelebek12022-12-16 16:01:35 +0000
committerGravatar Kelebek12022-12-16 16:07:24 +0000
commit6a56f42f5d94e2be405a736a74b86ffe3ab1b37b (patch)
treef110ff43899da31442d31c219c36f2b8a20ef974 /src/audio_core/out
parentMerge pull request #9431 from liamwhite/sixty-five-oh-two (diff)
downloadyuzu-6a56f42f5d94e2be405a736a74b86ffe3ab1b37b.tar.gz
yuzu-6a56f42f5d94e2be405a736a74b86ffe3ab1b37b.tar.xz
yuzu-6a56f42f5d94e2be405a736a74b86ffe3ab1b37b.zip
Signal buffer event on audio in/out system stop, and force remove all registered audio buffers
Diffstat (limited to 'src/audio_core/out')
-rw-r--r--src/audio_core/out/audio_out_system.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/audio_core/out/audio_out_system.cpp b/src/audio_core/out/audio_out_system.cpp
index a66208ed9..e096a1dac 100644
--- a/src/audio_core/out/audio_out_system.cpp
+++ b/src/audio_core/out/audio_out_system.cpp
@@ -24,7 +24,6 @@ System::~System() {
24void System::Finalize() { 24void System::Finalize() {
25 Stop(); 25 Stop();
26 session->Finalize(); 26 session->Finalize();
27 buffer_event->Signal();
28} 27}
29 28
30std::string_view System::GetDefaultOutputDeviceName() const { 29std::string_view System::GetDefaultOutputDeviceName() const {
@@ -102,6 +101,10 @@ Result System::Stop() {
102 if (state == State::Started) { 101 if (state == State::Started) {
103 session->Stop(); 102 session->Stop();
104 session->SetVolume(0.0f); 103 session->SetVolume(0.0f);
104 session->ClearBuffers();
105 if (buffers.ReleaseBuffers(system.CoreTiming(), *session, true)) {
106 buffer_event->Signal();
107 }
105 state = State::Stopped; 108 state = State::Stopped;
106 } 109 }
107 110
@@ -138,7 +141,7 @@ void System::RegisterBuffers() {
138} 141}
139 142
140void System::ReleaseBuffers() { 143void System::ReleaseBuffers() {
141 bool signal{buffers.ReleaseBuffers(system.CoreTiming(), *session)}; 144 bool signal{buffers.ReleaseBuffers(system.CoreTiming(), *session, false)};
142 if (signal) { 145 if (signal) {
143 // Signal if any buffer was released, or if none are registered, we need more. 146 // Signal if any buffer was released, or if none are registered, we need more.
144 buffer_event->Signal(); 147 buffer_event->Signal();