diff options
| author | 2022-09-23 09:07:38 -0400 | |
|---|---|---|
| committer | 2022-09-23 09:07:38 -0400 | |
| commit | 3b77dec188928c7c892115a066a188fc9e724752 (patch) | |
| tree | ca222316a9bf34491e0467473b8c0f765991cea3 /src/audio_core/audio_manager.cpp | |
| parent | Merge pull request #8849 from Morph1984/parallel-astc (diff) | |
| parent | audio_manager: Forward declare result type (diff) | |
| download | yuzu-3b77dec188928c7c892115a066a188fc9e724752.tar.gz yuzu-3b77dec188928c7c892115a066a188fc9e724752.tar.xz yuzu-3b77dec188928c7c892115a066a188fc9e724752.zip | |
Merge pull request #8938 from lioncash/manager
audio_manager: Minor cleanup related changes
Diffstat (limited to 'src/audio_core/audio_manager.cpp')
| -rw-r--r-- | src/audio_core/audio_manager.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/audio_core/audio_manager.cpp b/src/audio_core/audio_manager.cpp index 2f1bba9c3..2acde668e 100644 --- a/src/audio_core/audio_manager.cpp +++ b/src/audio_core/audio_manager.cpp | |||
| @@ -1,14 +1,13 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project | 1 | // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project |
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | 2 | // SPDX-License-Identifier: GPL-2.0-or-later |
| 3 | 3 | ||
| 4 | #include "audio_core/audio_in_manager.h" | ||
| 5 | #include "audio_core/audio_manager.h" | 4 | #include "audio_core/audio_manager.h" |
| 6 | #include "audio_core/audio_out_manager.h" | ||
| 7 | #include "core/core.h" | 5 | #include "core/core.h" |
| 6 | #include "core/hle/service/audio/errors.h" | ||
| 8 | 7 | ||
| 9 | namespace AudioCore { | 8 | namespace AudioCore { |
| 10 | 9 | ||
| 11 | AudioManager::AudioManager(Core::System& system_) : system{system_} { | 10 | AudioManager::AudioManager() { |
| 12 | thread = std::jthread([this]() { ThreadFunc(); }); | 11 | thread = std::jthread([this]() { ThreadFunc(); }); |
| 13 | } | 12 | } |
| 14 | 13 | ||
| @@ -27,7 +26,7 @@ Result AudioManager::SetOutManager(BufferEventFunc buffer_func) { | |||
| 27 | 26 | ||
| 28 | const auto index{events.GetManagerIndex(Event::Type::AudioOutManager)}; | 27 | const auto index{events.GetManagerIndex(Event::Type::AudioOutManager)}; |
| 29 | if (buffer_events[index] == nullptr) { | 28 | if (buffer_events[index] == nullptr) { |
| 30 | buffer_events[index] = buffer_func; | 29 | buffer_events[index] = std::move(buffer_func); |
| 31 | needs_update = true; | 30 | needs_update = true; |
| 32 | events.SetAudioEvent(Event::Type::AudioOutManager, true); | 31 | events.SetAudioEvent(Event::Type::AudioOutManager, true); |
| 33 | } | 32 | } |
| @@ -43,7 +42,7 @@ Result AudioManager::SetInManager(BufferEventFunc buffer_func) { | |||
| 43 | 42 | ||
| 44 | const auto index{events.GetManagerIndex(Event::Type::AudioInManager)}; | 43 | const auto index{events.GetManagerIndex(Event::Type::AudioInManager)}; |
| 45 | if (buffer_events[index] == nullptr) { | 44 | if (buffer_events[index] == nullptr) { |
| 46 | buffer_events[index] = buffer_func; | 45 | buffer_events[index] = std::move(buffer_func); |
| 47 | needs_update = true; | 46 | needs_update = true; |
| 48 | events.SetAudioEvent(Event::Type::AudioInManager, true); | 47 | events.SetAudioEvent(Event::Type::AudioInManager, true); |
| 49 | } | 48 | } |
| @@ -60,19 +59,21 @@ void AudioManager::ThreadFunc() { | |||
| 60 | running = true; | 59 | running = true; |
| 61 | 60 | ||
| 62 | while (running) { | 61 | while (running) { |
| 63 | auto timed_out{events.Wait(l, std::chrono::seconds(2))}; | 62 | const auto timed_out{events.Wait(l, std::chrono::seconds(2))}; |
| 64 | 63 | ||
| 65 | if (events.CheckAudioEventSet(Event::Type::Max)) { | 64 | if (events.CheckAudioEventSet(Event::Type::Max)) { |
| 66 | break; | 65 | break; |
| 67 | } | 66 | } |
| 68 | 67 | ||
| 69 | for (size_t i = 0; i < buffer_events.size(); i++) { | 68 | for (size_t i = 0; i < buffer_events.size(); i++) { |
| 70 | if (events.CheckAudioEventSet(Event::Type(i)) || timed_out) { | 69 | const auto event_type = static_cast<Event::Type>(i); |
| 70 | |||
| 71 | if (events.CheckAudioEventSet(event_type) || timed_out) { | ||
| 71 | if (buffer_events[i]) { | 72 | if (buffer_events[i]) { |
| 72 | buffer_events[i](); | 73 | buffer_events[i](); |
| 73 | } | 74 | } |
| 74 | } | 75 | } |
| 75 | events.SetAudioEvent(Event::Type(i), false); | 76 | events.SetAudioEvent(event_type, false); |
| 76 | } | 77 | } |
| 77 | } | 78 | } |
| 78 | } | 79 | } |