Prevent full wake lock from keeping device awake while dreaming.
A dream may itself hold a wake lock in order to keep the screen bright as it runs. However this wake lock also causes the device to stay awake even when it is not plugged in which is undesirable. This change makes full wake locks behave differently when napping or dreaming. The wake lock still keeps the screen bright but it does not prevent the device from falling asleep. This is similar to our policy of ignoring full wake locks completely when the device is manually put to sleep by the user. Bug: 7295909 Change-Id: Id99e82d2143ae1a81629281d6407d7527efb8137
This commit is contained in:
@ -127,6 +127,7 @@ public final class PowerManagerService extends IPowerManager.Stub
|
||||
private static final int WAKE_LOCK_SCREEN_DIM = 1 << 2;
|
||||
private static final int WAKE_LOCK_BUTTON_BRIGHT = 1 << 3;
|
||||
private static final int WAKE_LOCK_PROXIMITY_SCREEN_OFF = 1 << 4;
|
||||
private static final int WAKE_LOCK_STAY_AWAKE = 1 << 5; // only set if already awake
|
||||
|
||||
// Summarizes the user activity state.
|
||||
private static final int USER_ACTIVITY_SCREEN_BRIGHT = 1 << 0;
|
||||
@ -1172,16 +1173,25 @@ public final class PowerManagerService extends IPowerManager.Stub
|
||||
if (mWakefulness != WAKEFULNESS_ASLEEP) {
|
||||
mWakeLockSummary |= WAKE_LOCK_CPU
|
||||
| WAKE_LOCK_SCREEN_BRIGHT | WAKE_LOCK_BUTTON_BRIGHT;
|
||||
if (mWakefulness == WAKEFULNESS_AWAKE) {
|
||||
mWakeLockSummary |= WAKE_LOCK_STAY_AWAKE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PowerManager.SCREEN_BRIGHT_WAKE_LOCK:
|
||||
if (mWakefulness != WAKEFULNESS_ASLEEP) {
|
||||
mWakeLockSummary |= WAKE_LOCK_CPU | WAKE_LOCK_SCREEN_BRIGHT;
|
||||
if (mWakefulness == WAKEFULNESS_AWAKE) {
|
||||
mWakeLockSummary |= WAKE_LOCK_STAY_AWAKE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PowerManager.SCREEN_DIM_WAKE_LOCK:
|
||||
if (mWakefulness != WAKEFULNESS_ASLEEP) {
|
||||
mWakeLockSummary |= WAKE_LOCK_CPU | WAKE_LOCK_SCREEN_DIM;
|
||||
if (mWakefulness == WAKEFULNESS_AWAKE) {
|
||||
mWakeLockSummary |= WAKE_LOCK_STAY_AWAKE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK:
|
||||
@ -1339,7 +1349,7 @@ public final class PowerManagerService extends IPowerManager.Stub
|
||||
private boolean isBeingKeptAwakeLocked() {
|
||||
return mStayOn
|
||||
|| mProximityPositive
|
||||
|| (mWakeLockSummary & (WAKE_LOCK_SCREEN_BRIGHT | WAKE_LOCK_SCREEN_DIM)) != 0
|
||||
|| (mWakeLockSummary & WAKE_LOCK_STAY_AWAKE) != 0
|
||||
|| (mUserActivitySummary & (USER_ACTIVITY_SCREEN_BRIGHT
|
||||
| USER_ACTIVITY_SCREEN_DIM)) != 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user