diff options
| -rw-r--r-- | src/core/hle/service/audio/audout_u.cpp | 15 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audout_u.h | 1 | ||||
| -rw-r--r-- | src/core/hle/service/hid/hid.cpp | 7 | 
3 files changed, 21 insertions, 2 deletions
| diff --git a/src/core/hle/service/audio/audout_u.cpp b/src/core/hle/service/audio/audout_u.cpp index 8ecfef413..8a436bf97 100644 --- a/src/core/hle/service/audio/audout_u.cpp +++ b/src/core/hle/service/audio/audout_u.cpp @@ -49,9 +49,22 @@ void AudOutU::ListAudioOuts(Kernel::HLERequestContext& ctx) {      rb.Push<u32>(1);  } +void AudOutU::OpenAudioOut(Kernel::HLERequestContext& ctx) { +    LOG_WARNING(Service, "(STUBBED) called"); + +    IPC::RequestBuilder rb{ctx, 6}; + +    rb.Push(RESULT_SUCCESS); +    rb.Push<u32>(48000); // Sample Rate +    rb.Push<u32>(2);     // Channels +    rb.Push<u32>(2);     // PCM Format (INT16) +    rb.Push<u32>(0);     // Unknown +    rb.PushIpcInterface<Audio::IAudioOut>(); +} +  AudOutU::AudOutU() : ServiceFramework("audout:u") {      static const FunctionInfo functions[] = {{0x00000000, &AudOutU::ListAudioOuts, "ListAudioOuts"}, -                                             {0x00000001, nullptr, "OpenAudioOut"}, +                                             {0x00000001, &AudOutU::OpenAudioOut, "OpenAudioOut"},                                               {0x00000002, nullptr, "Unknown2"},                                               {0x00000003, nullptr, "Unknown3"}};      RegisterHandlers(functions); diff --git a/src/core/hle/service/audio/audout_u.h b/src/core/hle/service/audio/audout_u.h index 17529245b..69626cc58 100644 --- a/src/core/hle/service/audio/audout_u.h +++ b/src/core/hle/service/audio/audout_u.h @@ -20,6 +20,7 @@ public:  private:      void ListAudioOuts(Kernel::HLERequestContext& ctx); +    void OpenAudioOut(Kernel::HLERequestContext& ctx);  };  } // namespace Audio diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index be7a6ff65..d99e9c505 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp @@ -162,8 +162,13 @@ public:      ~Hid() = default;  private: +    Kernel::SharedPtr<Kernel::ClientPort> client_port; +      void CreateAppletResource(Kernel::HLERequestContext& ctx) { -        auto client_port = std::make_shared<IAppletResource>()->CreatePort(); +        if (client_port == nullptr) { +            client_port = std::make_shared<IAppletResource>()->CreatePort(); +        } +          auto session = client_port->Connect();          if (session.Succeeded()) {              LOG_DEBUG(Service, "called, initialized IAppletResource -> session=%u", | 
