summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Wei Wang <wvw@google.com> 2020-03-12 15:10:38 -0700
committer Wei Wang <wvw@google.com> 2020-03-17 16:11:42 -0700
commit80d224621f3b947be9ca5519fdfa7405e346b61d (patch)
tree90a084bd4fdb9d89631a2a30c542590421ac85c1
parentb4decfc142806b45adf273865aefdcfbc58b5375 (diff)
Send DEVICE_IDLE and DISPLAY_INACTIVE hint from framework
Bug: 140148621 Test: boot device Change-Id: I34971fde28a80056c51d3c1501467f975c7e82a2
-rw-r--r--core/java/android/view/Display.java9
-rw-r--r--services/core/java/com/android/server/power/PowerManagerService.java8
2 files changed, 15 insertions, 2 deletions
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index 0dcb9cc5256e..dffcafe1de0e 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -1307,6 +1307,15 @@ public final class Display {
}
/**
+ * Returns true if the display is in active state such as {@link #STATE_ON}
+ * or {@link #STATE_VR}.
+ * @hide
+ */
+ public static boolean isActiveState(int state) {
+ return state == STATE_ON || state == STATE_VR;
+ }
+
+ /**
* A mode supported by a given display.
*
* @see Display#getSupportedModes()
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 294deba459fe..3257b63843ec 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -18,6 +18,8 @@ package com.android.server.power;
import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_CRITICAL;
import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_DEFAULT;
+import static android.os.PowerManagerInternal.MODE_DEVICE_IDLE;
+import static android.os.PowerManagerInternal.MODE_DISPLAY_INACTIVE;
import static android.os.PowerManagerInternal.WAKEFULNESS_ASLEEP;
import static android.os.PowerManagerInternal.WAKEFULNESS_AWAKE;
import static android.os.PowerManagerInternal.WAKEFULNESS_DOZING;
@@ -42,8 +44,6 @@ import android.hardware.SystemSensorManager;
import android.hardware.display.AmbientDisplayConfiguration;
import android.hardware.display.DisplayManagerInternal;
import android.hardware.display.DisplayManagerInternal.DisplayPowerRequest;
-import android.hardware.power.Boost;
-import android.hardware.power.Mode;
import android.hardware.power.V1_0.PowerHint;
import android.net.Uri;
import android.os.BatteryManager;
@@ -2975,6 +2975,8 @@ public final class PowerManagerService extends SystemService
synchronized (mLock) {
if (mDisplayState != state) {
mDisplayState = state;
+ setPowerModeInternal(MODE_DISPLAY_INACTIVE,
+ !Display.isActiveState(state));
if (state == Display.STATE_OFF) {
if (!mDecoupleHalInteractiveModeFromDisplayConfig) {
setHalInteractiveModeLocked(false);
@@ -3297,6 +3299,7 @@ public final class PowerManagerService extends SystemService
}
mDeviceIdleMode = enabled;
updateWakeLockDisabledStatesLocked();
+ setPowerModeInternal(MODE_DEVICE_IDLE, mDeviceIdleMode || mLightDeviceIdleMode);
}
if (enabled) {
EventLogTags.writeDeviceIdleOnPhase("power");
@@ -3310,6 +3313,7 @@ public final class PowerManagerService extends SystemService
synchronized (mLock) {
if (mLightDeviceIdleMode != enabled) {
mLightDeviceIdleMode = enabled;
+ setPowerModeInternal(MODE_DEVICE_IDLE, mDeviceIdleMode || mLightDeviceIdleMode);
return true;
}
return false;