diff --git a/services/native/src/power_state_machine.cpp b/services/native/src/power_state_machine.cpp index 820ff2a351674fe11fc71ba25138600b006e5b2b..c963d2b9b5984ad5c1125167249e296366f548c4 100644 --- a/services/native/src/power_state_machine.cpp +++ b/services/native/src/power_state_machine.cpp @@ -235,7 +235,9 @@ void PowerStateMachine::SuspendDeviceInner( POWER_HILOGD(FEATURE_SUSPEND, "Do not suspend device, screen state is ignored"); } - SetState(PowerState::INACTIVE, GetReasionBySuspendType(type), true); + if (SetState(PowerState::INACTIVE, GetReasionBySuspendType(type), true)) { + ResetSleepTimer(); + } FinishTrace(HITRACE_TAG_POWER); POWER_HILOGD(FEATURE_SUSPEND, "Suspend device finish"); } @@ -642,11 +644,11 @@ void PowerStateMachine::ResetInactiveTimer() void PowerStateMachine::ResetSleepTimer() { - CancelDelayTimer(PowerStateMachine::CHECK_USER_ACTIVITY_TIMEOUT_MSG); - CancelDelayTimer(PowerStateMachine::CHECK_USER_ACTIVITY_OFF_TIMEOUT_MSG); - if (this->GetSleepTime() < 0) { - POWER_HILOGD(FEATURE_ACTIVITY, "Auto sleep is disabled"); - return; + auto pms = DelayedSpSingleton::GetInstance(); + auto suspendController = pms->GetSuspendController(); + if (suspendController != nullptr) { + suspendController->StartSleepTimer( + SuspendDeviceType::SUSPEND_DEVICE_REASON_APPLICATION, static_cast(SuspendAction::ACTION_AUTO_SUSPEND), 0); } } diff --git a/services/native/src/suspend/suspend_controller.h b/services/native/src/suspend/suspend_controller.h index e3efcc085e9c70bb52a1471b33747a2284bbfae5..4a9e379bc59b484c94e004c67d639779f0975884 100644 --- a/services/native/src/suspend/suspend_controller.h +++ b/services/native/src/suspend/suspend_controller.h @@ -64,10 +64,10 @@ public: { return sleepAction_; } + void StartSleepTimer(SuspendDeviceType reason, uint32_t action, uint32_t delay); private: void ControlListener(SuspendDeviceType reason, uint32_t action, uint32_t delay); - void StartSleepTimer(SuspendDeviceType reason, uint32_t action, uint32_t delay); void HandleAutoSleep(SuspendDeviceType reason); void HandleForceSleep(SuspendDeviceType reason); void HandleHibernate(SuspendDeviceType reason);