|
|
|
@ -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)) { |
|
|
|
|