From 7bc07195c567a001ecc54d23ba730aa8f369cac7 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Wed, 15 Sep 2021 16:27:05 -0400 Subject: [PATCH] audin_u: Return a buffer event in RegisterBufferEvent Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com> --- src/core/hle/service/audio/audin_u.cpp | 11 +++++++++-- src/core/hle/service/audio/audin_u.h | 3 +++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/core/hle/service/audio/audin_u.cpp b/src/core/hle/service/audio/audin_u.cpp index 30fedcc8d..570525019 100644 --- a/src/core/hle/service/audio/audin_u.cpp +++ b/src/core/hle/service/audio/audin_u.cpp @@ -3,13 +3,16 @@ // Refer to the license.txt file included. #include "common/logging/log.h" +#include "core/core.h" #include "core/hle/ipc_helpers.h" #include "core/hle/kernel/hle_ipc.h" +#include "core/hle/kernel/k_event.h" #include "core/hle/service/audio/audin_u.h" namespace Service::Audio { -IAudioIn::IAudioIn(Core::System& system_) : ServiceFramework{system_, "IAudioIn"} { +IAudioIn::IAudioIn(Core::System& system_) + : ServiceFramework{system_, "IAudioIn"}, buffer_event{system_.Kernel()} { // clang-format off static const FunctionInfo functions[] = { {0, nullptr, "GetAudioInState"}, @@ -31,6 +34,9 @@ IAudioIn::IAudioIn(Core::System& system_) : ServiceFramework{system_, "IAudioIn" // clang-format on RegisterHandlers(functions); + + Kernel::KAutoObject::Create(std::addressof(buffer_event)); + buffer_event.Initialize("IAudioIn:BufferEvent"); } IAudioIn::~IAudioIn() = default; @@ -45,8 +51,9 @@ void IAudioIn::Start(Kernel::HLERequestContext& ctx) { void IAudioIn::RegisterBufferEvent(Kernel::HLERequestContext& ctx) { LOG_WARNING(Service_Audio, "(STUBBED) called"); - IPC::ResponseBuilder rb{ctx, 2}; + IPC::ResponseBuilder rb{ctx, 2, 1}; rb.Push(ResultSuccess); + rb.PushCopyObjects(buffer_event.GetReadableEvent()); } void IAudioIn::AppendAudioInBufferAuto(Kernel::HLERequestContext& ctx) { diff --git a/src/core/hle/service/audio/audin_u.h b/src/core/hle/service/audio/audin_u.h index bde8fe7b7..f2f7f9932 100644 --- a/src/core/hle/service/audio/audin_u.h +++ b/src/core/hle/service/audio/audin_u.h @@ -4,6 +4,7 @@ #pragma once +#include "core/hle/kernel/k_event.h" #include "core/hle/service/service.h" namespace Core { @@ -25,6 +26,8 @@ private: void Start(Kernel::HLERequestContext& ctx); void RegisterBufferEvent(Kernel::HLERequestContext& ctx); void AppendAudioInBufferAuto(Kernel::HLERequestContext& ctx); + + Kernel::KEvent buffer_event; }; class AudInU final : public ServiceFramework {