summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/power/DisplayGroupPowerStateMapper.java9
-rw-r--r--services/core/java/com/android/server/power/PowerManagerService.java6
2 files changed, 14 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/power/DisplayGroupPowerStateMapper.java b/services/core/java/com/android/server/power/DisplayGroupPowerStateMapper.java
index ea933246e3b2..52d92703c22f 100644
--- a/services/core/java/com/android/server/power/DisplayGroupPowerStateMapper.java
+++ b/services/core/java/com/android/server/power/DisplayGroupPowerStateMapper.java
@@ -141,6 +141,14 @@ public class DisplayGroupPowerStateMapper {
return mDisplayGroupInfos.get(groupId).lastPowerOnTime;
}
+ void setPoweringOnLocked(int groupId, boolean poweringOn) {
+ mDisplayGroupInfos.get(groupId).poweringOn = poweringOn;
+ }
+
+ boolean isPoweringOnLocked(int groupId) {
+ return mDisplayGroupInfos.get(groupId).poweringOn;
+ }
+
/**
* Returns the amalgamated wakefulness of all {@link DisplayGroup DisplayGroups}.
*
@@ -300,6 +308,7 @@ public class DisplayGroupPowerStateMapper {
public int wakefulness;
public boolean ready;
public long lastPowerOnTime;
+ boolean poweringOn;
public boolean sandmanSummoned;
public long lastUserActivityTime;
public long lastUserActivityTimeNoChangeLights;
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index c4aca6c18453..8991981e6e6d 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -1831,6 +1831,7 @@ public final class PowerManagerService extends SystemService
setWakefulnessLocked(groupId, WAKEFULNESS_AWAKE, eventTime, uid, reason, opUid,
opPackageName, details);
mDisplayGroupPowerStateMapper.setLastPowerOnTimeLocked(groupId, eventTime);
+ mDisplayGroupPowerStateMapper.setPoweringOnLocked(groupId, true);
} finally {
Trace.traceEnd(Trace.TRACE_TAG_POWER);
}
@@ -3201,9 +3202,12 @@ public final class PowerManagerService extends SystemService
final boolean displayReadyStateChanged =
mDisplayGroupPowerStateMapper.setDisplayGroupReadyLocked(groupId, ready);
- if (ready && displayReadyStateChanged
+ final boolean poweringOn =
+ mDisplayGroupPowerStateMapper.isPoweringOnLocked(groupId);
+ if (ready && displayReadyStateChanged && poweringOn
&& mDisplayGroupPowerStateMapper.getWakefulnessLocked(
groupId) == WAKEFULNESS_AWAKE) {
+ mDisplayGroupPowerStateMapper.setPoweringOnLocked(groupId, false);
Trace.asyncTraceEnd(Trace.TRACE_TAG_POWER, TRACE_SCREEN_ON, groupId);
final int latencyMs = (int) (mClock.uptimeMillis()
- mDisplayGroupPowerStateMapper.getLastPowerOnTimeLocked(groupId));