diff options
| author | 2022-12-16 16:01:35 +0000 | |
|---|---|---|
| committer | 2022-12-16 16:07:24 +0000 | |
| commit | 6a56f42f5d94e2be405a736a74b86ffe3ab1b37b (patch) | |
| tree | f110ff43899da31442d31c219c36f2b8a20ef974 /src/audio_core/out | |
| parent | Merge pull request #9431 from liamwhite/sixty-five-oh-two (diff) | |
| download | yuzu-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.cpp | 7 |
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() { | |||
| 24 | void System::Finalize() { | 24 | void System::Finalize() { |
| 25 | Stop(); | 25 | Stop(); |
| 26 | session->Finalize(); | 26 | session->Finalize(); |
| 27 | buffer_event->Signal(); | ||
| 28 | } | 27 | } |
| 29 | 28 | ||
| 30 | std::string_view System::GetDefaultOutputDeviceName() const { | 29 | std::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 | ||
| 140 | void System::ReleaseBuffers() { | 143 | void 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(); |