diff options
author | Mike Lockwood <lockwood@android.com> | 2009-12-03 11:18:48 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2009-12-03 11:18:48 -0800 |
commit | 44000eb2a2340b1a47eaa587d4829810e04cbcdc (patch) | |
tree | 5dfe03faff6ecb08b266d93ddb696c94fca86da1 /services/java/com/android/server/PowerManagerService.java | |
parent | 1b794bbbdc961558a9f0ee956d9d3f684d1f0497 (diff) | |
parent | 678c2e35768a5426b4ad8f67c836008e7751a353 (diff) | |
download | frameworks_base-44000eb2a2340b1a47eaa587d4829810e04cbcdc.zip frameworks_base-44000eb2a2340b1a47eaa587d4829810e04cbcdc.tar.gz frameworks_base-44000eb2a2340b1a47eaa587d4829810e04cbcdc.tar.bz2 |
am 678c2e35: Merge change I9ef88863 into eclair
Merge commit '678c2e35768a5426b4ad8f67c836008e7751a353' into eclair-mr2
* commit '678c2e35768a5426b4ad8f67c836008e7751a353':
Add WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR to indicate screen was turned off by the proximity sensor.
Diffstat (limited to 'services/java/com/android/server/PowerManagerService.java')
-rw-r--r-- | services/java/com/android/server/PowerManagerService.java | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index 8584d74..6e769c7 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -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; @@ -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] + "}"); @@ -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; @@ -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) { @@ -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; @@ -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; } @@ -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; } @@ -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; @@ -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); } } @@ -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); } } @@ -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; @@ -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(); } } @@ -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. |