mirror of
https://github.com/yuzu-emu/yuzu-mainline.git
synced 2024-12-23 16:45:33 +00: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:
parent
0b3901bdd0
commit
b81f6f67f5
|
@ -266,7 +266,7 @@ ISelfController::ISelfController(std::shared_ptr<NVFlinger::NVFlinger> nvflinger
|
||||||
{65, nullptr, "ReportUserIsActive"},
|
{65, nullptr, "ReportUserIsActive"},
|
||||||
{66, nullptr, "GetCurrentIlluminance"},
|
{66, nullptr, "GetCurrentIlluminance"},
|
||||||
{67, nullptr, "IsIlluminanceAvailable"},
|
{67, nullptr, "IsIlluminanceAvailable"},
|
||||||
{68, nullptr, "SetAutoSleepDisabled"},
|
{68, &ISelfController::SetAutoSleepDisabled, "SetAutoSleepDisabled"},
|
||||||
{69, nullptr, "IsAutoSleepDisabled"},
|
{69, nullptr, "IsAutoSleepDisabled"},
|
||||||
{70, nullptr, "ReportMultimediaError"},
|
{70, nullptr, "ReportMultimediaError"},
|
||||||
{71, nullptr, "GetCurrentIlluminanceEx"},
|
{71, nullptr, "GetCurrentIlluminanceEx"},
|
||||||
|
@ -454,6 +454,26 @@ void ISelfController::GetIdleTimeDetectionExtension(Kernel::HLERequestContext& c
|
||||||
rb.Push<u32>(idle_time_detection_extension);
|
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) {
|
void ISelfController::GetAccumulatedSuspendedTickValue(Kernel::HLERequestContext& ctx) {
|
||||||
LOG_DEBUG(Service_AM, "called.");
|
LOG_DEBUG(Service_AM, "called.");
|
||||||
|
|
||||||
|
|
|
@ -133,6 +133,7 @@ private:
|
||||||
void SetHandlesRequestToDisplay(Kernel::HLERequestContext& ctx);
|
void SetHandlesRequestToDisplay(Kernel::HLERequestContext& ctx);
|
||||||
void SetIdleTimeDetectionExtension(Kernel::HLERequestContext& ctx);
|
void SetIdleTimeDetectionExtension(Kernel::HLERequestContext& ctx);
|
||||||
void GetIdleTimeDetectionExtension(Kernel::HLERequestContext& ctx);
|
void GetIdleTimeDetectionExtension(Kernel::HLERequestContext& ctx);
|
||||||
|
void SetAutoSleepDisabled(Kernel::HLERequestContext& ctx);
|
||||||
void GetAccumulatedSuspendedTickValue(Kernel::HLERequestContext& ctx);
|
void GetAccumulatedSuspendedTickValue(Kernel::HLERequestContext& ctx);
|
||||||
void GetAccumulatedSuspendedTickChangedEvent(Kernel::HLERequestContext& ctx);
|
void GetAccumulatedSuspendedTickChangedEvent(Kernel::HLERequestContext& ctx);
|
||||||
|
|
||||||
|
@ -142,6 +143,7 @@ private:
|
||||||
|
|
||||||
u32 idle_time_detection_extension = 0;
|
u32 idle_time_detection_extension = 0;
|
||||||
u64 num_fatal_sections_entered = 0;
|
u64 num_fatal_sections_entered = 0;
|
||||||
|
bool is_auto_sleep_disabled = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ICommonStateGetter final : public ServiceFramework<ICommonStateGetter> {
|
class ICommonStateGetter final : public ServiceFramework<ICommonStateGetter> {
|
||||||
|
|
Loading…
Reference in a new issue