diff options
author | lat9nq <22451773+lat9nq@users.noreply.github.com> | 2021-09-15 16:27:05 -0400 |
---|---|---|
committer | lat9nq <22451773+lat9nq@users.noreply.github.com> | 2021-09-15 16:38:12 -0400 |
commit | 7bc07195c567a001ecc54d23ba730aa8f369cac7 (patch) | |
tree | 4ff0822d9635e666f099c2c8933af5cd1a5adf35 /src | |
parent | 17b0955f9a9a044060d9673a5e28ede5e5b245ff (diff) |
audin_u: Return a buffer event in RegisterBufferEvent
Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/core/hle/service/audio/audin_u.cpp | 11 | ||||
-rw-r--r-- | 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<AudInU> { |