|
|
|
@ -232,12 +232,12 @@ IDebugFunctions::IDebugFunctions() : ServiceFramework{"IDebugFunctions"} {
|
|
|
|
|
|
|
|
|
|
IDebugFunctions::~IDebugFunctions() = default;
|
|
|
|
|
|
|
|
|
|
ISelfController::ISelfController(Core::System& system_,
|
|
|
|
|
std::shared_ptr<NVFlinger::NVFlinger> nvflinger_)
|
|
|
|
|
: ServiceFramework("ISelfController"), nvflinger(std::move(nvflinger_)) {
|
|
|
|
|
ISelfController::ISelfController(Core::System& system,
|
|
|
|
|
std::shared_ptr<NVFlinger::NVFlinger> nvflinger)
|
|
|
|
|
: ServiceFramework("ISelfController"), system(system), nvflinger(std::move(nvflinger)) {
|
|
|
|
|
// clang-format off
|
|
|
|
|
static const FunctionInfo functions[] = {
|
|
|
|
|
{0, nullptr, "Exit"},
|
|
|
|
|
{0, &ISelfController::Exit, "Exit"},
|
|
|
|
|
{1, &ISelfController::LockExit, "LockExit"},
|
|
|
|
|
{2, &ISelfController::UnlockExit, "UnlockExit"},
|
|
|
|
|
{3, &ISelfController::EnterFatalSection, "EnterFatalSection"},
|
|
|
|
@ -282,7 +282,7 @@ ISelfController::ISelfController(Core::System& system_,
|
|
|
|
|
|
|
|
|
|
RegisterHandlers(functions);
|
|
|
|
|
|
|
|
|
|
auto& kernel = system_.Kernel();
|
|
|
|
|
auto& kernel = system.Kernel();
|
|
|
|
|
launchable_event = Kernel::WritableEvent::CreateEventPair(kernel, Kernel::ResetType::Manual,
|
|
|
|
|
"ISelfController:LaunchableEvent");
|
|
|
|
|
|
|
|
|
@ -298,15 +298,28 @@ ISelfController::ISelfController(Core::System& system_,
|
|
|
|
|
|
|
|
|
|
ISelfController::~ISelfController() = default;
|
|
|
|
|
|
|
|
|
|
void ISelfController::Exit(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
LOG_DEBUG(Service_AM, "called");
|
|
|
|
|
|
|
|
|
|
system.Shutdown();
|
|
|
|
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ISelfController::LockExit(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
LOG_WARNING(Service_AM, "(STUBBED) called");
|
|
|
|
|
LOG_DEBUG(Service_AM, "called");
|
|
|
|
|
|
|
|
|
|
system.SetExitLock(true);
|
|
|
|
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ISelfController::UnlockExit(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
LOG_WARNING(Service_AM, "(STUBBED) called");
|
|
|
|
|
LOG_DEBUG(Service_AM, "called");
|
|
|
|
|
|
|
|
|
|
system.SetExitLock(false);
|
|
|
|
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
@ -550,6 +563,10 @@ void AppletMessageQueue::OperationModeChanged() {
|
|
|
|
|
on_operation_mode_changed.writable->Signal();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void AppletMessageQueue::RequestExit() {
|
|
|
|
|
PushMessage(AppletMessage::ExitRequested);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ICommonStateGetter::ICommonStateGetter(Core::System& system,
|
|
|
|
|
std::shared_ptr<AppletMessageQueue> msg_queue)
|
|
|
|
|
: ServiceFramework("ICommonStateGetter"), system(system), msg_queue(std::move(msg_queue)) {
|
|
|
|
|