Loading core/java/android/view/WindowManagerPolicy.java +2 −0 Original line number Diff line number Diff line Loading @@ -361,6 +361,8 @@ public interface WindowManagerPolicy { public final int OFF_BECAUSE_OF_USER = 1; /** Screen turned off because of timeout */ public final int OFF_BECAUSE_OF_TIMEOUT = 2; /** Screen turned off because of proximity sensor */ public final int OFF_BECAUSE_OF_PROX_SENSOR = 3; /** * Magic constant to {@link IWindowManager#setRotation} to not actually Loading services/java/com/android/server/PowerManagerService.java +23 −21 Original line number Diff line number Diff line Loading @@ -161,7 +161,9 @@ class PowerManagerService extends IPowerManager.Stub private int[] mBroadcastWhy = new int[3]; private int mPartialCount = 0; private int mPowerState; private boolean mOffBecauseOfUser; // mScreenOffReason can be WindowManagerPolicy.OFF_BECAUSE_OF_USER, // WindowManagerPolicy.OFF_BECAUSE_OF_TIMEOUT or WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR private int mScreenOffReason; private int mUserState; private boolean mKeyboardVisible = false; private boolean mUserActivityAllowed = true; Loading Loading @@ -919,7 +921,7 @@ class PowerManagerService extends IPowerManager.Stub + " " + ((mNextTimeout-now)/1000) + "s from now"); pw.println(" mDimScreen=" + mDimScreen + " mStayOnConditions=" + mStayOnConditions); pw.println(" mOffBecauseOfUser=" + mOffBecauseOfUser pw.println(" mScreenOffReason=" + mScreenOffReason + " mUserState=" + mUserState); pw.println(" mBroadcastQueue={" + mBroadcastQueue[0] + ',' + mBroadcastQueue[1] + ',' + mBroadcastQueue[2] + "}"); Loading Loading @@ -1384,10 +1386,10 @@ class PowerManagerService extends IPowerManager.Stub private void setPowerState(int state) { setPowerState(state, false, false); setPowerState(state, false, WindowManagerPolicy.OFF_BECAUSE_OF_TIMEOUT); } private void setPowerState(int newState, boolean noChangeLights, boolean becauseOfUser) private void setPowerState(int newState, boolean noChangeLights, int reason) { synchronized (mLocks) { int err; Loading @@ -1395,7 +1397,8 @@ class PowerManagerService extends IPowerManager.Stub if (mSpew) { Log.d(TAG, "setPowerState: mPowerState=0x" + Integer.toHexString(mPowerState) + " newState=0x" + Integer.toHexString(newState) + " noChangeLights=" + noChangeLights); + " noChangeLights=" + noChangeLights + " reason=" + reason); } if (noChangeLights) { Loading Loading @@ -1489,7 +1492,7 @@ class PowerManagerService extends IPowerManager.Stub mLastTouchDown = 0; mTotalTouchDownTime = 0; mTouchCycles = 0; EventLog.writeEvent(LOG_POWER_SCREEN_STATE, 1, becauseOfUser ? 1 : 0, EventLog.writeEvent(LOG_POWER_SCREEN_STATE, 1, reason, mTotalTouchDownTime, mTouchCycles); if (err == 0) { mPowerState |= SCREEN_ON_BIT; Loading @@ -1508,10 +1511,10 @@ class PowerManagerService extends IPowerManager.Stub Binder.restoreCallingIdentity(identity); } mPowerState &= ~SCREEN_ON_BIT; mScreenOffReason = reason; if (!mScreenBrightness.animating) { err = screenOffFinishedAnimatingLocked(becauseOfUser); err = screenOffFinishedAnimatingLocked(reason); } else { mOffBecauseOfUser = becauseOfUser; err = 0; mLastTouchDown = 0; } Loading @@ -1520,19 +1523,16 @@ class PowerManagerService extends IPowerManager.Stub } } private int screenOffFinishedAnimatingLocked(boolean becauseOfUser) { private int screenOffFinishedAnimatingLocked(int reason) { // I don't think we need to check the current state here because all of these // Power.setScreenState and sendNotificationLocked can both handle being // called multiple times in the same state. -joeo EventLog.writeEvent(LOG_POWER_SCREEN_STATE, 0, becauseOfUser ? 1 : 0, mTotalTouchDownTime, mTouchCycles); EventLog.writeEvent(LOG_POWER_SCREEN_STATE, 0, reason, mTotalTouchDownTime, mTouchCycles); mLastTouchDown = 0; int err = setScreenStateLocked(false); if (err == 0) { int why = becauseOfUser ? WindowManagerPolicy.OFF_BECAUSE_OF_USER : WindowManagerPolicy.OFF_BECAUSE_OF_TIMEOUT; sendNotificationLocked(false, why); mScreenOffReason = reason; sendNotificationLocked(false, reason); } return err; } Loading Loading @@ -1808,7 +1808,7 @@ class PowerManagerService extends IPowerManager.Stub animating = more; if (!more) { if (mask == SCREEN_BRIGHT_BIT && curIntValue == Power.BRIGHTNESS_OFF) { screenOffFinishedAnimatingLocked(mOffBecauseOfUser); screenOffFinishedAnimatingLocked(mScreenOffReason); } } return more; Loading Loading @@ -1994,7 +1994,8 @@ class PowerManagerService extends IPowerManager.Stub } mWakeLockState = mLocks.reactivateScreenLocksLocked(); setPowerState(mUserState | mWakeLockState, noChangeLights, true); setPowerState(mUserState | mWakeLockState, noChangeLights, WindowManagerPolicy.OFF_BECAUSE_OF_USER); setTimeoutLocked(time, SCREEN_BRIGHT); } } Loading Loading @@ -2125,7 +2126,7 @@ class PowerManagerService extends IPowerManager.Stub { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null); synchronized (mLocks) { goToSleepLocked(time); goToSleepLocked(time, WindowManagerPolicy.OFF_BECAUSE_OF_USER); } } Loading @@ -2143,7 +2144,7 @@ class PowerManagerService extends IPowerManager.Stub } } private void goToSleepLocked(long time) { private void goToSleepLocked(long time, int reason) { if (mLastEventTime <= time) { mLastEventTime = time; Loading @@ -2161,7 +2162,7 @@ class PowerManagerService extends IPowerManager.Stub EventLog.writeEvent(LOG_POWER_SLEEP_REQUESTED, numCleared); mStillNeedSleepNotification = true; mUserState = SCREEN_OFF; setPowerState(SCREEN_OFF, false, true); setPowerState(SCREEN_OFF, false, reason); cancelTimerLocked(); } } Loading Loading @@ -2517,7 +2518,8 @@ class PowerManagerService extends IPowerManager.Stub return; } if (active) { goToSleepLocked(SystemClock.uptimeMillis()); goToSleepLocked(SystemClock.uptimeMillis(), WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR); mProximitySensorActive = true; } else { // proximity sensor negative events trigger as user activity. Loading Loading
core/java/android/view/WindowManagerPolicy.java +2 −0 Original line number Diff line number Diff line Loading @@ -361,6 +361,8 @@ public interface WindowManagerPolicy { public final int OFF_BECAUSE_OF_USER = 1; /** Screen turned off because of timeout */ public final int OFF_BECAUSE_OF_TIMEOUT = 2; /** Screen turned off because of proximity sensor */ public final int OFF_BECAUSE_OF_PROX_SENSOR = 3; /** * Magic constant to {@link IWindowManager#setRotation} to not actually Loading
services/java/com/android/server/PowerManagerService.java +23 −21 Original line number Diff line number Diff line Loading @@ -161,7 +161,9 @@ class PowerManagerService extends IPowerManager.Stub private int[] mBroadcastWhy = new int[3]; private int mPartialCount = 0; private int mPowerState; private boolean mOffBecauseOfUser; // mScreenOffReason can be WindowManagerPolicy.OFF_BECAUSE_OF_USER, // WindowManagerPolicy.OFF_BECAUSE_OF_TIMEOUT or WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR private int mScreenOffReason; private int mUserState; private boolean mKeyboardVisible = false; private boolean mUserActivityAllowed = true; Loading Loading @@ -919,7 +921,7 @@ class PowerManagerService extends IPowerManager.Stub + " " + ((mNextTimeout-now)/1000) + "s from now"); pw.println(" mDimScreen=" + mDimScreen + " mStayOnConditions=" + mStayOnConditions); pw.println(" mOffBecauseOfUser=" + mOffBecauseOfUser pw.println(" mScreenOffReason=" + mScreenOffReason + " mUserState=" + mUserState); pw.println(" mBroadcastQueue={" + mBroadcastQueue[0] + ',' + mBroadcastQueue[1] + ',' + mBroadcastQueue[2] + "}"); Loading Loading @@ -1384,10 +1386,10 @@ class PowerManagerService extends IPowerManager.Stub private void setPowerState(int state) { setPowerState(state, false, false); setPowerState(state, false, WindowManagerPolicy.OFF_BECAUSE_OF_TIMEOUT); } private void setPowerState(int newState, boolean noChangeLights, boolean becauseOfUser) private void setPowerState(int newState, boolean noChangeLights, int reason) { synchronized (mLocks) { int err; Loading @@ -1395,7 +1397,8 @@ class PowerManagerService extends IPowerManager.Stub if (mSpew) { Log.d(TAG, "setPowerState: mPowerState=0x" + Integer.toHexString(mPowerState) + " newState=0x" + Integer.toHexString(newState) + " noChangeLights=" + noChangeLights); + " noChangeLights=" + noChangeLights + " reason=" + reason); } if (noChangeLights) { Loading Loading @@ -1489,7 +1492,7 @@ class PowerManagerService extends IPowerManager.Stub mLastTouchDown = 0; mTotalTouchDownTime = 0; mTouchCycles = 0; EventLog.writeEvent(LOG_POWER_SCREEN_STATE, 1, becauseOfUser ? 1 : 0, EventLog.writeEvent(LOG_POWER_SCREEN_STATE, 1, reason, mTotalTouchDownTime, mTouchCycles); if (err == 0) { mPowerState |= SCREEN_ON_BIT; Loading @@ -1508,10 +1511,10 @@ class PowerManagerService extends IPowerManager.Stub Binder.restoreCallingIdentity(identity); } mPowerState &= ~SCREEN_ON_BIT; mScreenOffReason = reason; if (!mScreenBrightness.animating) { err = screenOffFinishedAnimatingLocked(becauseOfUser); err = screenOffFinishedAnimatingLocked(reason); } else { mOffBecauseOfUser = becauseOfUser; err = 0; mLastTouchDown = 0; } Loading @@ -1520,19 +1523,16 @@ class PowerManagerService extends IPowerManager.Stub } } private int screenOffFinishedAnimatingLocked(boolean becauseOfUser) { private int screenOffFinishedAnimatingLocked(int reason) { // I don't think we need to check the current state here because all of these // Power.setScreenState and sendNotificationLocked can both handle being // called multiple times in the same state. -joeo EventLog.writeEvent(LOG_POWER_SCREEN_STATE, 0, becauseOfUser ? 1 : 0, mTotalTouchDownTime, mTouchCycles); EventLog.writeEvent(LOG_POWER_SCREEN_STATE, 0, reason, mTotalTouchDownTime, mTouchCycles); mLastTouchDown = 0; int err = setScreenStateLocked(false); if (err == 0) { int why = becauseOfUser ? WindowManagerPolicy.OFF_BECAUSE_OF_USER : WindowManagerPolicy.OFF_BECAUSE_OF_TIMEOUT; sendNotificationLocked(false, why); mScreenOffReason = reason; sendNotificationLocked(false, reason); } return err; } Loading Loading @@ -1808,7 +1808,7 @@ class PowerManagerService extends IPowerManager.Stub animating = more; if (!more) { if (mask == SCREEN_BRIGHT_BIT && curIntValue == Power.BRIGHTNESS_OFF) { screenOffFinishedAnimatingLocked(mOffBecauseOfUser); screenOffFinishedAnimatingLocked(mScreenOffReason); } } return more; Loading Loading @@ -1994,7 +1994,8 @@ class PowerManagerService extends IPowerManager.Stub } mWakeLockState = mLocks.reactivateScreenLocksLocked(); setPowerState(mUserState | mWakeLockState, noChangeLights, true); setPowerState(mUserState | mWakeLockState, noChangeLights, WindowManagerPolicy.OFF_BECAUSE_OF_USER); setTimeoutLocked(time, SCREEN_BRIGHT); } } Loading Loading @@ -2125,7 +2126,7 @@ class PowerManagerService extends IPowerManager.Stub { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null); synchronized (mLocks) { goToSleepLocked(time); goToSleepLocked(time, WindowManagerPolicy.OFF_BECAUSE_OF_USER); } } Loading @@ -2143,7 +2144,7 @@ class PowerManagerService extends IPowerManager.Stub } } private void goToSleepLocked(long time) { private void goToSleepLocked(long time, int reason) { if (mLastEventTime <= time) { mLastEventTime = time; Loading @@ -2161,7 +2162,7 @@ class PowerManagerService extends IPowerManager.Stub EventLog.writeEvent(LOG_POWER_SLEEP_REQUESTED, numCleared); mStillNeedSleepNotification = true; mUserState = SCREEN_OFF; setPowerState(SCREEN_OFF, false, true); setPowerState(SCREEN_OFF, false, reason); cancelTimerLocked(); } } Loading Loading @@ -2517,7 +2518,8 @@ class PowerManagerService extends IPowerManager.Stub return; } if (active) { goToSleepLocked(SystemClock.uptimeMillis()); goToSleepLocked(SystemClock.uptimeMillis(), WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR); mProximitySensorActive = true; } else { // proximity sensor negative events trigger as user activity. Loading