From 51d8a2c322357d97a66fd07d3a6007bbb15e4ff4 Mon Sep 17 00:00:00 2001 From: bunnei Date: Sun, 3 Jun 2018 23:37:17 -0400 Subject: [PATCH 1/3] am: Stub out ILibraryAppletAccessor Start and GetResult methods. --- src/core/hle/service/am/am.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index 40922ec3a..a7c9701c8 100644 --- a/src/core/hle/service/am/am.cpp +++ b/src/core/hle/service/am/am.cpp @@ -436,10 +436,10 @@ public: static const FunctionInfo functions[] = { {0, &ILibraryAppletAccessor::GetAppletStateChangedEvent, "GetAppletStateChangedEvent"}, {1, nullptr, "IsCompleted"}, - {10, nullptr, "Start"}, + {10, &ILibraryAppletAccessor::Start, "Start"}, {20, nullptr, "RequestExit"}, {25, nullptr, "Terminate"}, - {30, nullptr, "GetResult"}, + {30, &ILibraryAppletAccessor::GetResult, "GetResult"}, {50, nullptr, "SetOutOfFocusApplicationSuspendingEnabled"}, {100, &ILibraryAppletAccessor::PushInData, "PushInData"}, {101, nullptr, "PopOutData"}, @@ -470,6 +470,20 @@ private: NGLOG_WARNING(Service_AM, "(STUBBED) called"); } + void GetResult(Kernel::HLERequestContext& ctx) { + IPC::ResponseBuilder rb{ctx, 2}; + rb.Push(RESULT_SUCCESS); + + NGLOG_WARNING(Service_AM, "(STUBBED) called"); + } + + void Start(Kernel::HLERequestContext& ctx) { + IPC::ResponseBuilder rb{ctx, 2}; + rb.Push(RESULT_SUCCESS); + + NGLOG_WARNING(Service_AM, "(STUBBED) called"); + } + void PushInData(Kernel::HLERequestContext& ctx) { IPC::RequestParser rp{ctx}; storage_stack.push(rp.PopIpcInterface()); From df4336a85e79292877d3926e33eff8081e19e79a Mon Sep 17 00:00:00 2001 From: bunnei Date: Sun, 3 Jun 2018 23:42:28 -0400 Subject: [PATCH 2/3] am: ISelfController:LaunchableEvent should be sticky. --- src/core/hle/service/am/am.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index a7c9701c8..f9336192f 100644 --- a/src/core/hle/service/am/am.cpp +++ b/src/core/hle/service/am/am.cpp @@ -155,7 +155,7 @@ ISelfController::ISelfController(std::shared_ptr nvflinger RegisterHandlers(functions); launchable_event = - Kernel::Event::Create(Kernel::ResetType::OneShot, "ISelfController:LaunchableEvent"); + Kernel::Event::Create(Kernel::ResetType::Sticky, "ISelfController:LaunchableEvent"); } void ISelfController::SetFocusHandlingMode(Kernel::HLERequestContext& ctx) { From afdd2f4cad44efd29ce38a724e4e5636fa90be7a Mon Sep 17 00:00:00 2001 From: bunnei Date: Sun, 3 Jun 2018 23:43:31 -0400 Subject: [PATCH 3/3] am: Implement ILibraryAppletAccessor::PopOutData. --- src/core/hle/service/am/am.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index f9336192f..12954556d 100644 --- a/src/core/hle/service/am/am.cpp +++ b/src/core/hle/service/am/am.cpp @@ -442,7 +442,7 @@ public: {30, &ILibraryAppletAccessor::GetResult, "GetResult"}, {50, nullptr, "SetOutOfFocusApplicationSuspendingEnabled"}, {100, &ILibraryAppletAccessor::PushInData, "PushInData"}, - {101, nullptr, "PopOutData"}, + {101, &ILibraryAppletAccessor::PopOutData, "PopOutData"}, {102, nullptr, "PushExtraStorage"}, {103, nullptr, "PushInteractiveInData"}, {104, nullptr, "PopInteractiveOutData"}, @@ -494,6 +494,16 @@ private: NGLOG_DEBUG(Service_AM, "called"); } + void PopOutData(Kernel::HLERequestContext& ctx) { + IPC::ResponseBuilder rb{ctx, 2, 0, 1}; + rb.Push(RESULT_SUCCESS); + rb.PushIpcInterface(std::move(storage_stack.top())); + + storage_stack.pop(); + + NGLOG_DEBUG(Service_AM, "called"); + } + std::stack> storage_stack; Kernel::SharedPtr state_changed_event; };