diff options
| author | bunnei <bunneidev@gmail.com> | 2018-06-04 13:23:19 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-06-04 13:23:19 -0400 | 
| commit | b7c64f0dedb871ff7202763602c29e68082d7ee9 (patch) | |
| tree | 5e0bf442859482988f6b7ac23e284b119512c010 /src/core/hle | |
| parent | d16f83fda352714e20d023e65467a907fc67bee5 (diff) | |
| parent | afdd2f4cad44efd29ce38a724e4e5636fa90be7a (diff) | |
Merge pull request #502 from bunnei/more-am-stuff
am: Implement PopOutData, and various fixes.
Diffstat (limited to 'src/core/hle')
| -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;  };  | 
