From c203016b590230092d1385fdeac5a3a7d3206e33 Mon Sep 17 00:00:00 2001 From: Tim Murray Date: Fri, 14 Jul 2017 13:54:37 -0700 Subject: [PATCH] power: throttle interaction hints Don't send power HAL interaction hints more than every 100ms. Also can send userActivity calls every 100ms too (down from 500ms). Test: power HAL doesn't run every 8ms Bug: 63632697 Change-Id: Ic986f6fc51e58f8060f7bf2d2ac61a9906be5c1f --- ...droid_server_power_PowerManagerService.cpp | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/services/core/jni/com_android_server_power_PowerManagerService.cpp b/services/core/jni/com_android_server_power_PowerManagerService.cpp index c722629a28f46..c71614d69b0bf 100644 --- a/services/core/jni/com_android_server_power_PowerManagerService.cpp +++ b/services/core/jni/com_android_server_power_PowerManagerService.cpp @@ -62,7 +62,7 @@ std::mutex gPowerHalMutex; static nsecs_t gLastEventTime[USER_ACTIVITY_EVENT_LAST + 1]; // Throttling interval for user activity calls. -static const nsecs_t MIN_TIME_BETWEEN_USERACTIVITIES = 500 * 1000000L; // 500ms +static const nsecs_t MIN_TIME_BETWEEN_USERACTIVITIES = 100 * 1000000L; // 100ms // ---------------------------------------------------------------------------- @@ -101,14 +101,6 @@ static void processReturn(const Return &ret, const char* functionName) { } void android_server_PowerManagerService_userActivity(nsecs_t eventTime, int32_t eventType) { - // Tell the power HAL when user activity occurs. - gPowerHalMutex.lock(); - if (getPowerHal()) { - Return ret = gPowerHal->powerHint(PowerHint::INTERACTION, 0); - processReturn(ret, "powerHint"); - } - gPowerHalMutex.unlock(); - if (gPowerManagerServiceObj) { // Throttle calls into user activity by event type. // We're a little conservative about argument checking here in case the caller @@ -123,6 +115,17 @@ void android_server_PowerManagerService_userActivity(nsecs_t eventTime, int32_t return; } gLastEventTime[eventType] = eventTime; + + + // Tell the power HAL when user activity occurs. + gPowerHalMutex.lock(); + if (getPowerHal()) { + Return ret; + ret = gPowerHal->powerHint(PowerHint::INTERACTION, 0); + processReturn(ret, "powerHint"); + } + gPowerHalMutex.unlock(); + } JNIEnv* env = AndroidRuntime::getJNIEnv();