mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	service/am: Implement SetAutoSleepDisabled
Provides a basic implementation of SetAutoSleepDisabled. Until idle handling is implemented, this is about the best we can do. In the meantime, provide a rough documenting of specifics that occur when this function is called on actual hardware.
This commit is contained in:
		@@ -266,7 +266,7 @@ ISelfController::ISelfController(std::shared_ptr<NVFlinger::NVFlinger> nvflinger
 | 
			
		||||
        {65, nullptr, "ReportUserIsActive"},
 | 
			
		||||
        {66, nullptr, "GetCurrentIlluminance"},
 | 
			
		||||
        {67, nullptr, "IsIlluminanceAvailable"},
 | 
			
		||||
        {68, nullptr, "SetAutoSleepDisabled"},
 | 
			
		||||
        {68, &ISelfController::SetAutoSleepDisabled, "SetAutoSleepDisabled"},
 | 
			
		||||
        {69, nullptr, "IsAutoSleepDisabled"},
 | 
			
		||||
        {70, nullptr, "ReportMultimediaError"},
 | 
			
		||||
        {71, nullptr, "GetCurrentIlluminanceEx"},
 | 
			
		||||
@@ -454,6 +454,26 @@ void ISelfController::GetIdleTimeDetectionExtension(Kernel::HLERequestContext& c
 | 
			
		||||
    rb.Push<u32>(idle_time_detection_extension);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ISelfController::SetAutoSleepDisabled(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp{ctx};
 | 
			
		||||
    is_auto_sleep_disabled = rp.Pop<bool>();
 | 
			
		||||
 | 
			
		||||
    // On the system itself, if the previous state of is_auto_sleep_disabled
 | 
			
		||||
    // differed from the current value passed in, it'd signify the internal
 | 
			
		||||
    // window manager to update (and also increment some statistics like update counts)
 | 
			
		||||
    //
 | 
			
		||||
    // It'd also indicate this change to an idle handling context.
 | 
			
		||||
    //
 | 
			
		||||
    // However, given we're emulating this behavior, most of this can be ignored
 | 
			
		||||
    // and it's sufficient to simply set the member variable for querying via
 | 
			
		||||
    // IsAutoSleepDisabled().
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_AM, "called. is_auto_sleep_disabled={}", is_auto_sleep_disabled);
 | 
			
		||||
 | 
			
		||||
    IPC::ResponseBuilder rb{ctx, 2};
 | 
			
		||||
    rb.Push(RESULT_SUCCESS);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ISelfController::GetAccumulatedSuspendedTickValue(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    LOG_DEBUG(Service_AM, "called.");
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -133,6 +133,7 @@ private:
 | 
			
		||||
    void SetHandlesRequestToDisplay(Kernel::HLERequestContext& ctx);
 | 
			
		||||
    void SetIdleTimeDetectionExtension(Kernel::HLERequestContext& ctx);
 | 
			
		||||
    void GetIdleTimeDetectionExtension(Kernel::HLERequestContext& ctx);
 | 
			
		||||
    void SetAutoSleepDisabled(Kernel::HLERequestContext& ctx);
 | 
			
		||||
    void GetAccumulatedSuspendedTickValue(Kernel::HLERequestContext& ctx);
 | 
			
		||||
    void GetAccumulatedSuspendedTickChangedEvent(Kernel::HLERequestContext& ctx);
 | 
			
		||||
 | 
			
		||||
@@ -142,6 +143,7 @@ private:
 | 
			
		||||
 | 
			
		||||
    u32 idle_time_detection_extension = 0;
 | 
			
		||||
    u64 num_fatal_sections_entered = 0;
 | 
			
		||||
    bool is_auto_sleep_disabled = false;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class ICommonStateGetter final : public ServiceFramework<ICommonStateGetter> {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user