diff options
author | bunnei <bunneidev@gmail.com> | 2018-06-04 19:23:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-04 19:23:19 +0200 |
commit | b7c64f0dedb871ff7202763602c29e68082d7ee9 (patch) | |
tree | 5e0bf442859482988f6b7ac23e284b119512c010 | |
parent | Merge pull request #507 from valentinvanelslande/3616 (diff) | |
parent | am: Implement ILibraryAppletAccessor::PopOutData. (diff) | |
download | yuzu-b7c64f0dedb871ff7202763602c29e68082d7ee9.tar yuzu-b7c64f0dedb871ff7202763602c29e68082d7ee9.tar.gz yuzu-b7c64f0dedb871ff7202763602c29e68082d7ee9.tar.bz2 yuzu-b7c64f0dedb871ff7202763602c29e68082d7ee9.tar.lz yuzu-b7c64f0dedb871ff7202763602c29e68082d7ee9.tar.xz yuzu-b7c64f0dedb871ff7202763602c29e68082d7ee9.tar.zst yuzu-b7c64f0dedb871ff7202763602c29e68082d7ee9.zip |
-rw-r--r-- | src/core/hle/service/am/am.cpp | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index 40922ec3a..12954556d 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::NVFlinger> 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) { @@ -436,13 +436,13 @@ 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"}, + {101, &ILibraryAppletAccessor::PopOutData, "PopOutData"}, {102, nullptr, "PushExtraStorage"}, {103, nullptr, "PushInteractiveInData"}, {104, nullptr, "PopInteractiveOutData"}, @@ -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<AM::IStorage>()); @@ -480,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<AM::IStorage>(std::move(storage_stack.top())); + + storage_stack.pop(); + + NGLOG_DEBUG(Service_AM, "called"); + } + std::stack<std::shared_ptr<AM::IStorage>> storage_stack; Kernel::SharedPtr<Kernel::Event> state_changed_event; }; |