diff options
-rw-r--r-- | services/core/java/com/android/server/power/DisplayGroupPowerStateMapper.java | 9 | ||||
-rw-r--r-- | services/core/java/com/android/server/power/PowerManagerService.java | 6 |
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)); |