mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-30 23:49:01 -05:00 
			
		
		
		
	am: Implement ISelfController Exit
Closes the current application.
This commit is contained in:
		| @@ -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"}, | ||||
| @@ -298,6 +298,15 @@ 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"); | ||||
|  | ||||
|   | ||||
| @@ -125,6 +125,7 @@ public: | ||||
|     ~ISelfController() override; | ||||
|  | ||||
| private: | ||||
|     void Exit(Kernel::HLERequestContext& ctx); | ||||
|     void LockExit(Kernel::HLERequestContext& ctx); | ||||
|     void UnlockExit(Kernel::HLERequestContext& ctx); | ||||
|     void EnterFatalSection(Kernel::HLERequestContext& ctx); | ||||
| @@ -153,6 +154,8 @@ private: | ||||
|     u32 idle_time_detection_extension = 0; | ||||
|     u64 num_fatal_sections_entered = 0; | ||||
|     bool is_auto_sleep_disabled = false; | ||||
|  | ||||
|     Core::System& system; | ||||
| }; | ||||
|  | ||||
| class ICommonStateGetter final : public ServiceFramework<ICommonStateGetter> { | ||||
|   | ||||
| @@ -19,6 +19,8 @@ class NVFlinger; | ||||
|  | ||||
| namespace AM { | ||||
|  | ||||
| class AppletMessageQueue; | ||||
|  | ||||
| class AppletAE final : public ServiceFramework<AppletAE> { | ||||
| public: | ||||
|     explicit AppletAE(std::shared_ptr<NVFlinger::NVFlinger> nvflinger, | ||||
|   | ||||
| @@ -19,6 +19,8 @@ class NVFlinger; | ||||
|  | ||||
| namespace AM { | ||||
|  | ||||
| class AppletMessageQueue; | ||||
|  | ||||
| class AppletOE final : public ServiceFramework<AppletOE> { | ||||
| public: | ||||
|     explicit AppletOE(std::shared_ptr<NVFlinger::NVFlinger> nvflinger, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Zach Hilman
					Zach Hilman