summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/PowerManagerService.java
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2009-12-03 11:18:48 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2009-12-03 11:18:48 -0800
commit44000eb2a2340b1a47eaa587d4829810e04cbcdc (patch)
tree5dfe03faff6ecb08b266d93ddb696c94fca86da1 /services/java/com/android/server/PowerManagerService.java
parent1b794bbbdc961558a9f0ee956d9d3f684d1f0497 (diff)
parent678c2e35768a5426b4ad8f67c836008e7751a353 (diff)
downloadframeworks_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.java44
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.