am 96fce6e1: Merge change I62704736 into eclair
Merge commit '96fce6e112aec1e09c82cfd7657381ce112dc555' into eclair-mr2 * commit '96fce6e112aec1e09c82cfd7657381ce112dc555': Do not apply light sensor debounce logic while the light sensor is still warming up.
This commit is contained in:
@@ -200,6 +200,11 @@
|
||||
<integer-array name="config_autoBrightnessKeyboardBacklightValues">
|
||||
</integer-array>
|
||||
|
||||
<!-- Amount of time it takes for the light sensor to warm up in milliseconds.
|
||||
For this time after the screen turns on, the Power Manager
|
||||
will not debounce light sensor readings -->
|
||||
<integer name="config_lightSensorWarmupTime">0</integer>
|
||||
|
||||
<!-- Enables swipe versus poly-finger touch disambiguation in the KeyboardView -->
|
||||
<bool name="config_swipeDisambiguation">true</bool>
|
||||
</resources>
|
||||
|
||||
@@ -212,8 +212,12 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
private volatile boolean mPokeAwakeOnSet = false;
|
||||
private volatile boolean mInitComplete = false;
|
||||
private HashMap<IBinder,PokeLock> mPokeLocks = new HashMap<IBinder,PokeLock>();
|
||||
// mScreenOnTime and mScreenOnStartTime are used for computing total time screen
|
||||
// has been on since boot
|
||||
private long mScreenOnTime;
|
||||
private long mScreenOnStartTime;
|
||||
// mLastScreenOnTime is the time the screen was last turned on
|
||||
private long mLastScreenOnTime;
|
||||
private boolean mPreventScreenOn;
|
||||
private int mScreenBrightnessOverride = -1;
|
||||
private boolean mUseSoftwareAutoBrightness;
|
||||
@@ -222,6 +226,7 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
private int[] mLcdBacklightValues;
|
||||
private int[] mButtonBacklightValues;
|
||||
private int[] mKeyboardBacklightValues;
|
||||
private int mLightSensorWarmupTime;
|
||||
|
||||
// Used when logging number and duration of touch-down cycles
|
||||
private long mTotalTouchDownTime;
|
||||
@@ -456,6 +461,8 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
com.android.internal.R.array.config_autoBrightnessButtonBacklightValues);
|
||||
mKeyboardBacklightValues = resources.getIntArray(
|
||||
com.android.internal.R.array.config_autoBrightnessKeyboardBacklightValues);
|
||||
mLightSensorWarmupTime = resources.getInteger(
|
||||
com.android.internal.R.integer.config_lightSensorWarmupTime);
|
||||
}
|
||||
|
||||
ContentResolver resolver = mContext.getContentResolver();
|
||||
@@ -886,6 +893,7 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
pw.println(" mPreventScreenOn=" + mPreventScreenOn
|
||||
+ " mScreenBrightnessOverride=" + mScreenBrightnessOverride);
|
||||
pw.println(" mTotalDelaySetting=" + mTotalDelaySetting);
|
||||
pw.println(" mLastScreenOnTime=" + mLastScreenOnTime);
|
||||
pw.println(" mBroadcastWakeLock=" + mBroadcastWakeLock);
|
||||
pw.println(" mStayOnWhilePluggedInScreenDimLock=" + mStayOnWhilePluggedInScreenDimLock);
|
||||
pw.println(" mStayOnWhilePluggedInPartialLock=" + mStayOnWhilePluggedInPartialLock);
|
||||
@@ -1299,15 +1307,18 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
|
||||
private int setScreenStateLocked(boolean on) {
|
||||
int err = Power.setScreenState(on);
|
||||
if (err == 0 && mUseSoftwareAutoBrightness) {
|
||||
enableLightSensor(on);
|
||||
if (!on) {
|
||||
// make sure button and key backlights are off too
|
||||
mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, 0);
|
||||
mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD, 0);
|
||||
// clear current value so we will update based on the new conditions
|
||||
// when the sensor is reenabled.
|
||||
mLightSensorValue = -1;
|
||||
if (err == 0) {
|
||||
mLastScreenOnTime = (on ? SystemClock.elapsedRealtime() : 0);
|
||||
if (mUseSoftwareAutoBrightness) {
|
||||
enableLightSensor(on);
|
||||
if (!on) {
|
||||
// make sure button and key backlights are off too
|
||||
mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, 0);
|
||||
mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD, 0);
|
||||
// clear current value so we will update based on the new conditions
|
||||
// when the sensor is reenabled.
|
||||
mLightSensorValue = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return err;
|
||||
@@ -2431,13 +2442,15 @@ class PowerManagerService extends IPowerManager.Stub
|
||||
public void onSensorChanged(SensorEvent event) {
|
||||
synchronized (mLocks) {
|
||||
int value = (int)event.values[0];
|
||||
long milliseconds = event.timestamp / 1000000;
|
||||
if (mDebugLightSensor) {
|
||||
Log.d(TAG, "onSensorChanged: light value: " + value);
|
||||
}
|
||||
mHandler.removeCallbacks(mAutoBrightnessTask);
|
||||
if (mLightSensorValue != value) {
|
||||
if (mLightSensorValue == -1) {
|
||||
// process the value immediately
|
||||
if (mLightSensorValue == -1 ||
|
||||
milliseconds < mLastScreenOnTime + mLightSensorWarmupTime) {
|
||||
// process the value immediately if screen has just turned on
|
||||
lightSensorChangedLocked(value);
|
||||
} else {
|
||||
// delay processing to debounce the sensor
|
||||
|
||||
Reference in New Issue
Block a user