diff --git a/services/native/include/power_state_machine.h b/services/native/include/power_state_machine.h index 8d7b5cb0799e39d508d4e56037f8a4427f07c6cd..37931e3ceb935870fb03b7bd08fb428f880f7df2 100644 --- a/services/native/include/power_state_machine.h +++ b/services/native/include/power_state_machine.h @@ -21,6 +21,7 @@ #include #include "actions/idevice_state_action.h" +#include "ffrt_utils.h" #include "ipower_state_callback.h" #include "power_common.h" #include "power_state_machine_info.h" @@ -201,6 +202,7 @@ private: std::map>> lockMap_; std::map> controllerMap_; std::mutex mutex_; + std::mutex ffrtMutex_; DevicePowerState mDeviceState_; sptr powerStateCBDeathRecipient_; std::set, classcomp> powerStateListeners_; @@ -212,6 +214,8 @@ private: bool enableDisplaySuspend_ {false}; bool isScreenOffTimeOverride_ {false}; int64_t beforeOverrideTime_ {-1}; + FFRTQueue queue_ {"power_state_machine"}; + FFRTHandle userActivityTimeoutHandle_ {nullptr}; }; } // namespace PowerMgr } // namespace OHOS diff --git a/services/native/src/power_state_machine.cpp b/services/native/src/power_state_machine.cpp index 6d4449bf6555056f898f7abeb3571950b8d8a213..75279d1e45daed92d696158505c80f2690e89426 100644 --- a/services/native/src/power_state_machine.cpp +++ b/services/native/src/power_state_machine.cpp @@ -22,15 +22,12 @@ #include "hitrace_meter.h" #include "power_mgr_factory.h" #include "power_mgr_service.h" -#include "ffrt_utils.h" #include "setting_helper.h" namespace OHOS { namespace PowerMgr { namespace { sptr g_displayOffTimeObserver; -FFRTQueue g_queue("power_state_machine"); -FFRTHandle g_userActivityTimeoutHandle; } PowerStateMachine::PowerStateMachine(const wptr& pms) : pms_(pms), currentState_(PowerState::UNKNOWN) { @@ -583,10 +580,9 @@ void PowerStateMachine::SetDelayTimer(int64_t delayTime, int32_t event) std::to_string(delayTime).c_str(), event); switch (event) { case CHECK_USER_ACTIVITY_TIMEOUT_MSG: { - FFRTTask task = [this] { - HandleActivityTimeout(); - }; - g_userActivityTimeoutHandle = FFRTUtils::SubmitDelayTask(task, delayTime, g_queue); + std::lock_guard lock(ffrtMutex_); + FFRTTask task = std::bind(&PowerStateMachine::HandleActivityTimeout, this); + userActivityTimeoutHandle_ = FFRTUtils::SubmitDelayTask(task, delayTime, queue_); break; } case CHECK_USER_ACTIVITY_OFF_TIMEOUT_MSG: { @@ -610,7 +606,8 @@ void PowerStateMachine::CancelDelayTimer(int32_t event) POWER_HILOGD(FEATURE_ACTIVITY, "Cancel delay timer, event: %{public}d", event); switch (event) { case CHECK_USER_ACTIVITY_TIMEOUT_MSG: { - FFRTUtils::CancelTask(g_userActivityTimeoutHandle, g_queue); + std::lock_guard lock(ffrtMutex_); + FFRTUtils::CancelTask(userActivityTimeoutHandle_, queue_); break; } case CHECK_USER_ACTIVITY_OFF_TIMEOUT_MSG: { diff --git a/test/apitest/inner_api/shutdown/BUILD.gn b/test/apitest/inner_api/shutdown/BUILD.gn index 366d9035f0468aade19445fce282bbc30fa93652..f856247a1c4ff6aab96ce8db315899443457c10b 100644 --- a/test/apitest/inner_api/shutdown/BUILD.gn +++ b/test/apitest/inner_api/shutdown/BUILD.gn @@ -37,14 +37,16 @@ deps_ex = [ "ability_base:base", "ability_base:want", "ability_runtime:ability_manager", + "c_utils:utils", "common_event_service:cesfwk_innerkits", - "ipc:ipc_core", + "ffrt:libffrt", "hilog:libhilog", + "input:libmmi-client", + "ipc:ipc_core", + "power_manager:power_ffrt", "safwk:system_ability_fwk", "samgr:samgr_proxy", "sensor:sensor_interface_native", - "c_utils:utils", - "input:libmmi-client", ] ohos_unittest("takeover_shutdown_callback_test") { diff --git a/test/fuzztest/power_fuzzer/BUILD.gn b/test/fuzztest/power_fuzzer/BUILD.gn index 709c534f40892968d35ef410ad18787c41894709..2b4ed9e99648690d1091bc93b6873e6f8e42eb0c 100644 --- a/test/fuzztest/power_fuzzer/BUILD.gn +++ b/test/fuzztest/power_fuzzer/BUILD.gn @@ -49,9 +49,11 @@ ohos_fuzztest("PowerFuzzTest") { external_deps = [ "ability_runtime:ability_manager", "c_utils:utils", + "ffrt:libffrt", "hilog:libhilog", "input:libmmi-client", "ipc:ipc_core", + "power_manager:power_ffrt", "sensor:sensor_interface_native", ] } diff --git a/test/systemtest/BUILD.gn b/test/systemtest/BUILD.gn index 5c26d8940cb16a3cff76c611589698c0d6c33b7d..08ff2c2937d74d952d24f5642a99a2506c662577 100644 --- a/test/systemtest/BUILD.gn +++ b/test/systemtest/BUILD.gn @@ -36,10 +36,12 @@ deps_ex = [ "ability_runtime:ability_manager", "bundle_framework:appexecfwk_base", "bundle_framework:appexecfwk_core", - "common_event_service:cesfwk_innerkits", "c_utils:utils", + "common_event_service:cesfwk_innerkits", + "ffrt:libffrt", "hilog:libhilog", "ipc:ipc_core", + "power_manager:power_ffrt", "safwk:system_ability_fwk", "samgr:samgr_proxy", "sensor:sensor_interface_native", diff --git a/test/unittest/BUILD.gn b/test/unittest/BUILD.gn index 3815159c65dcb600bf7d45cb6e79ea5b2a5ceb97..01c8edce28294a6acbee331a0258e44e063cf278 100644 --- a/test/unittest/BUILD.gn +++ b/test/unittest/BUILD.gn @@ -52,15 +52,17 @@ deps_ex = [ "ability_base:base", "ability_base:want", "ability_runtime:ability_manager", - "config_policy:configpolicy_util", + "c_utils:utils", "common_event_service:cesfwk_innerkits", - "ipc:ipc_core", + "config_policy:configpolicy_util", + "ffrt:libffrt", "hilog:libhilog", + "input:libmmi-client", + "ipc:ipc_core", + "power_manager:power_ffrt", "safwk:system_ability_fwk", "samgr:samgr_proxy", "sensor:sensor_interface_native", - "c_utils:utils", - "input:libmmi-client", ] defs = [ "POWER_GTEST" ] diff --git a/test/unittest/src/servicetest/BUILD.gn b/test/unittest/src/servicetest/BUILD.gn index b48da571662cab4e6a51801bf1245960b10ef8d4..ebe33ace9d56d49f5d320896c86948864803d94d 100644 --- a/test/unittest/src/servicetest/BUILD.gn +++ b/test/unittest/src/servicetest/BUILD.gn @@ -47,13 +47,15 @@ deps_ex = [ "ability_base:base", "ability_base:want", "ability_runtime:ability_manager", + "c_utils:utils", "common_event_service:cesfwk_innerkits", - "ipc:ipc_core", + "ffrt:libffrt", "hilog:libhilog", + "ipc:ipc_core", + "power_manager:power_ffrt", "safwk:system_ability_fwk", "samgr:samgr_proxy", "sensor:sensor_interface_native", - "c_utils:utils", ] ##############################native_test##########################################