am 2e8295ce: am 3bb98aec: Merge "Fix issue #6730064: When turning off Nakasi, it very often..." into jb-dev
* commit '2e8295ce1861d8284f16e0f0f80475db0ec2983f':
Fix issue #6730064: When turning off Nakasi, it very often...
diff --git a/services/java/com/android/server/power/PowerManagerService.java b/services/java/com/android/server/power/PowerManagerService.java
index 7ba95c0..edd00e8 100644
--- a/services/java/com/android/server/power/PowerManagerService.java
+++ b/services/java/com/android/server/power/PowerManagerService.java
@@ -1034,7 +1034,7 @@
mWakeLockState = mLocks.gatherState();
// goes in the middle to reduce flicker
if ((wl.flags & PowerManager.ON_AFTER_RELEASE) != 0) {
- userActivity(SystemClock.uptimeMillis(), -1, false, OTHER_EVENT, false);
+ userActivity(SystemClock.uptimeMillis(), -1, false, OTHER_EVENT, false, true);
}
setPowerState(mWakeLockState | mUserState);
}
@@ -2463,7 +2463,7 @@
public void userActivityWithForce(long time, boolean noChangeLights, boolean force) {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
- userActivity(time, -1, noChangeLights, OTHER_EVENT, force);
+ userActivity(time, -1, noChangeLights, OTHER_EVENT, force, false);
}
public void userActivity(long time, boolean noChangeLights) {
@@ -2476,15 +2476,15 @@
return;
}
- userActivity(time, -1, noChangeLights, OTHER_EVENT, false);
+ userActivity(time, -1, noChangeLights, OTHER_EVENT, false, false);
}
public void userActivity(long time, boolean noChangeLights, int eventType) {
- userActivity(time, -1, noChangeLights, eventType, false);
+ userActivity(time, -1, noChangeLights, eventType, false, false);
}
public void userActivity(long time, boolean noChangeLights, int eventType, boolean force) {
- userActivity(time, -1, noChangeLights, eventType, force);
+ userActivity(time, -1, noChangeLights, eventType, force, false);
}
/*
@@ -2494,11 +2494,11 @@
public void clearUserActivityTimeout(long now, long timeout) {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
Slog.i(TAG, "clearUserActivity for " + timeout + "ms from now");
- userActivity(now, timeout, false, OTHER_EVENT, false);
+ userActivity(now, timeout, false, OTHER_EVENT, false, false);
}
private void userActivity(long time, long timeoutOverride, boolean noChangeLights,
- int eventType, boolean force) {
+ int eventType, boolean force, boolean ignoreIfScreenOff) {
if (((mPokey & POKE_LOCK_IGNORE_TOUCH_EVENTS) != 0) && (eventType == TOUCH_EVENT)) {
if (false) {
@@ -2522,6 +2522,11 @@
Slog.d(TAG, "ignoring user activity while turning off screen");
return;
}
+ // ignore if the caller doesn't want this to allow the screen to turn
+ // on, and the screen is currently off.
+ if (ignoreIfScreenOff && (mPowerState & SCREEN_ON_BIT) == 0) {
+ return;
+ }
// Disable proximity sensor if if user presses power key while we are in the
// "waiting for proximity sensor to go negative" state.
if (mProximitySensorActive && mProximityWakeLockCount == 0) {