From de177f66926a5170c1ad0621085494d27de8e2d4 Mon Sep 17 00:00:00 2001 From: bunnei Date: Wed, 24 Jan 2018 22:38:19 -0500 Subject: audout_u: Various cleanups. --- src/core/hle/service/audio/audout_u.cpp | 46 ++++++++++++--------------------- 1 file changed, 17 insertions(+), 29 deletions(-) (limited to 'src/core') diff --git a/src/core/hle/service/audio/audout_u.cpp b/src/core/hle/service/audio/audout_u.cpp index 3a0f8f362..f56ba2ea1 100644 --- a/src/core/hle/service/audio/audout_u.cpp +++ b/src/core/hle/service/audio/audout_u.cpp @@ -23,7 +23,7 @@ constexpr u64 audio_ticks{static_cast(BASE_CLOCK_RATE / 500)}; class IAudioOut final : public ServiceFramework { public: - IAudioOut() : ServiceFramework("IAudioOut"), audio_out_state(Stopped) { + IAudioOut() : ServiceFramework("IAudioOut"), audio_out_state(AudioState::Stopped) { static const FunctionInfo functions[] = { {0x0, nullptr, "GetAudioOutState"}, {0x1, &IAudioOut::StartAudioOut, "StartAudioOut"}, @@ -58,8 +58,8 @@ private: void StartAudioOut(Kernel::HLERequestContext& ctx) { LOG_WARNING(Service_Audio, "(STUBBED) called"); - // start audio - audio_out_state = Started; + // Start audio + audio_out_state = AudioState::Started; IPC::ResponseBuilder rb{ctx, 2}; rb.Push(RESULT_SUCCESS); @@ -68,8 +68,8 @@ private: void StopAudioOut(Kernel::HLERequestContext& ctx) { LOG_WARNING(Service_Audio, "(STUBBED) called"); - // stop audio - audio_out_state = Stopped; + // Stop audio + audio_out_state = AudioState::Stopped; queue_keys.clear(); @@ -89,8 +89,7 @@ private: LOG_WARNING(Service_Audio, "(STUBBED) called"); IPC::RequestParser rp{ctx}; - u64 key = rp.Pop(); - + const u64 key{rp.Pop()}; queue_keys.insert(queue_keys.begin(), key); IPC::ResponseBuilder rb{ctx, 2}; @@ -102,11 +101,10 @@ private: const auto& buffer = ctx.BufferDescriptorB()[0]; - // TODO(st4rk): this is how libtransistor currently implements the - // GetReleasedAudioOutBuffer, it should return the key (a VAddr) to the APP and this address + // TODO(st4rk): This is how libtransistor currently implements the + // GetReleasedAudioOutBuffer, it should return the key (a VAddr) to the app and this address // is used to know which buffer should be filled with data and send again to the service // through AppendAudioOutBuffer. Check if this is the proper way to do it. - u64 key{0}; if (queue_keys.size()) { @@ -124,8 +122,7 @@ private: } void UpdateAudioBuffersCallback() { - - if (audio_out_state != Started) { + if (audio_out_state != AudioState::Started) { return; } @@ -136,7 +133,7 @@ private: buffer_event->Signal(); } - enum AudioState : u32 { + enum class AudioState : u32 { Started, Stopped, }; @@ -148,10 +145,10 @@ private: /// This is the evend handle used to check if the audio buffer was released Kernel::SharedPtr buffer_event; - /// (st4rk): this is just a temporary workaround for the future implementation. Libtransistor + /// (st4rk): This is just a temporary workaround for the future implementation. Libtransistor /// uses the key as an address in the App, so we need to return when the /// GetReleasedAudioOutBuffer_1 is called, otherwise we'll run in problems, because - /// libtransistor uses the key returned as an pointer; + /// libtransistor uses the key returned as an pointer. std::vector queue_keys; AudioState audio_out_state; @@ -169,11 +166,9 @@ void AudOutU::ListAudioOuts(Kernel::HLERequestContext& ctx) { IPC::ResponseBuilder rb = rp.MakeBuilder(3, 0, 0); rb.Push(RESULT_SUCCESS); - // TODO(st4rk): we're currently returning only one audio interface - // (stringlist size) - // however, it's highly possible to have more than one interface (despite that - // libtransistor - // requires only one). + // TODO(st4rk): We're currently returning only one audio interface (stringlist size). However, + // it's highly possible to have more than one interface (despite that libtransistor requires + // only one). rb.Push(1); } @@ -184,20 +179,13 @@ void AudOutU::OpenAudioOut(Kernel::HLERequestContext& ctx) { audio_out_interface = std::make_shared(); } - auto sessions = Kernel::ServerSession::CreateSessionPair(audio_out_interface->GetServiceName()); - auto server = std::get>(sessions); - auto client = std::get>(sessions); - audio_out_interface->ClientConnected(server); - LOG_DEBUG(Service, "called, initialized IAudioOut -> session=%u", client->GetObjectId()); IPC::ResponseBuilder rb{ctx, 6, 0, 1}; - rb.Push(RESULT_SUCCESS); rb.Push(sample_rate); rb.Push(audio_channels); rb.Push(static_cast(PcmFormat::Int16)); - // this field is unknown - rb.Push(0); - rb.PushMoveObjects(std::move(client)); + rb.Push(0); // This field is unknown + rb.PushIpcInterface(audio_out_interface); } AudOutU::AudOutU() : ServiceFramework("audout:u") { -- cgit v1.2.3