From eaf66b4c9f9517bcb4f417260ad460fca4254bec Mon Sep 17 00:00:00 2001 From: bunnei Date: Sat, 28 Jul 2018 13:27:59 -0400 Subject: audio_core: Move to audout_u impl. - This is necessary so streams are created on the same thread. --- src/core/hle/service/audio/audout_u.cpp | 8 ++++---- src/core/hle/service/audio/audout_u.h | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'src/core/hle') diff --git a/src/core/hle/service/audio/audout_u.cpp b/src/core/hle/service/audio/audout_u.cpp index a15d53ff8..ab37c2a69 100644 --- a/src/core/hle/service/audio/audout_u.cpp +++ b/src/core/hle/service/audio/audout_u.cpp @@ -25,9 +25,8 @@ constexpr int DefaultSampleRate{48000}; class IAudioOut final : public ServiceFramework { public: - IAudioOut(AudoutParams audio_params) - : ServiceFramework("IAudioOut"), audio_params(audio_params), - audio_core(Core::System::GetInstance().AudioCore()) { + IAudioOut(AudoutParams audio_params, AudioCore::AudioOut& audio_core) + : ServiceFramework("IAudioOut"), audio_params(audio_params), audio_core(audio_core) { static const FunctionInfo functions[] = { {0, &IAudioOut::GetAudioOutState, "GetAudioOutState"}, @@ -195,7 +194,7 @@ void AudOutU::OpenAudioOutImpl(Kernel::HLERequestContext& ctx) { // TODO(bunnei): Support more than one IAudioOut interface. When we add this, ListAudioOutsImpl // will likely need to be updated as well. ASSERT_MSG(!audio_out_interface, "Unimplemented"); - audio_out_interface = std::make_shared(std::move(params)); + audio_out_interface = std::make_shared(std::move(params), *audio_core); IPC::ResponseBuilder rb{ctx, 6, 0, 1}; rb.Push(RESULT_SUCCESS); @@ -212,6 +211,7 @@ AudOutU::AudOutU() : ServiceFramework("audout:u") { {2, &AudOutU::ListAudioOutsImpl, "ListAudioOutsAuto"}, {3, &AudOutU::OpenAudioOutImpl, "OpenAudioOutAuto"}}; RegisterHandlers(functions); + audio_core = std::make_unique(); } } // namespace Service::Audio diff --git a/src/core/hle/service/audio/audout_u.h b/src/core/hle/service/audio/audout_u.h index bc43f1f44..e5c2184d5 100644 --- a/src/core/hle/service/audio/audout_u.h +++ b/src/core/hle/service/audio/audout_u.h @@ -4,6 +4,7 @@ #pragma once +#include "audio_core/audio_out.h" #include "core/hle/service/service.h" namespace Kernel { @@ -33,6 +34,7 @@ public: private: std::shared_ptr audio_out_interface; + std::unique_ptr audio_core; void ListAudioOutsImpl(Kernel::HLERequestContext& ctx); void OpenAudioOutImpl(Kernel::HLERequestContext& ctx); -- cgit v1.2.3