summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/am/am.cpp
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2019-03-26 20:12:09 +0100
committerLioncash <mathew1800@gmail.com>2019-03-26 22:02:42 +0100
commit758d84db9adf6d4cf72de4c76059f8ab18fd4584 (patch)
tree2a00601a1fa0c18fb363d46bc5d0826ca9e20c60 /src/core/hle/service/am/am.cpp
parentservice/am: Sort ISelfController's member functions according to table order (diff)
downloadyuzu-758d84db9adf6d4cf72de4c76059f8ab18fd4584.tar
yuzu-758d84db9adf6d4cf72de4c76059f8ab18fd4584.tar.gz
yuzu-758d84db9adf6d4cf72de4c76059f8ab18fd4584.tar.bz2
yuzu-758d84db9adf6d4cf72de4c76059f8ab18fd4584.tar.lz
yuzu-758d84db9adf6d4cf72de4c76059f8ab18fd4584.tar.xz
yuzu-758d84db9adf6d4cf72de4c76059f8ab18fd4584.tar.zst
yuzu-758d84db9adf6d4cf72de4c76059f8ab18fd4584.zip
Diffstat (limited to '')
-rw-r--r--src/core/hle/service/am/am.cpp28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index 336593108..d31ab7970 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -239,8 +239,8 @@ ISelfController::ISelfController(std::shared_ptr<NVFlinger::NVFlinger> nvflinger
{0, nullptr, "Exit"},
{1, &ISelfController::LockExit, "LockExit"},
{2, &ISelfController::UnlockExit, "UnlockExit"},
- {3, nullptr, "EnterFatalSection"},
- {4, nullptr, "LeaveFatalSection"},
+ {3, &ISelfController::EnterFatalSection, "EnterFatalSection"},
+ {4, &ISelfController::LeaveFatalSection, "LeaveFatalSection"},
{9, &ISelfController::GetLibraryAppletLaunchableEvent, "GetLibraryAppletLaunchableEvent"},
{10, &ISelfController::SetScreenShotPermission, "SetScreenShotPermission"},
{11, &ISelfController::SetOperationModeChangedNotification, "SetOperationModeChangedNotification"},
@@ -299,6 +299,30 @@ void ISelfController::UnlockExit(Kernel::HLERequestContext& ctx) {
rb.Push(RESULT_SUCCESS);
}
+void ISelfController::EnterFatalSection(Kernel::HLERequestContext& ctx) {
+ ++num_fatal_sections_entered;
+ LOG_DEBUG(Service_AM, "called. Num fatal sections entered: {}", num_fatal_sections_entered);
+
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(RESULT_SUCCESS);
+}
+
+void ISelfController::LeaveFatalSection(Kernel::HLERequestContext& ctx) {
+ LOG_DEBUG(Service_AM, "called.");
+
+ // Entry and exit of fatal sections must be balanced.
+ if (num_fatal_sections_entered == 0) {
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ResultCode{ErrorModule::AM, 512});
+ return;
+ }
+
+ --num_fatal_sections_entered;
+
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(RESULT_SUCCESS);
+}
+
void ISelfController::GetLibraryAppletLaunchableEvent(Kernel::HLERequestContext& ctx) {
LOG_WARNING(Service_AM, "(STUBBED) called");