Merge commit '9882f38584882461dbfef229e4fe316dacebd9c5' into eclair-mr2-plus-aosp * commit '9882f38584882461dbfef229e4fe316dacebd9c5': 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 name="config_autoBrightnessKeyboardBacklightValues">
|
||||||
</integer-array>
|
</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 -->
|
<!-- Enables swipe versus poly-finger touch disambiguation in the KeyboardView -->
|
||||||
<bool name="config_swipeDisambiguation">true</bool>
|
<bool name="config_swipeDisambiguation">true</bool>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -212,8 +212,12 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
private volatile boolean mPokeAwakeOnSet = false;
|
private volatile boolean mPokeAwakeOnSet = false;
|
||||||
private volatile boolean mInitComplete = false;
|
private volatile boolean mInitComplete = false;
|
||||||
private HashMap<IBinder,PokeLock> mPokeLocks = new HashMap<IBinder,PokeLock>();
|
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 mScreenOnTime;
|
||||||
private long mScreenOnStartTime;
|
private long mScreenOnStartTime;
|
||||||
|
// mLastScreenOnTime is the time the screen was last turned on
|
||||||
|
private long mLastScreenOnTime;
|
||||||
private boolean mPreventScreenOn;
|
private boolean mPreventScreenOn;
|
||||||
private int mScreenBrightnessOverride = -1;
|
private int mScreenBrightnessOverride = -1;
|
||||||
private boolean mUseSoftwareAutoBrightness;
|
private boolean mUseSoftwareAutoBrightness;
|
||||||
@@ -222,6 +226,7 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
private int[] mLcdBacklightValues;
|
private int[] mLcdBacklightValues;
|
||||||
private int[] mButtonBacklightValues;
|
private int[] mButtonBacklightValues;
|
||||||
private int[] mKeyboardBacklightValues;
|
private int[] mKeyboardBacklightValues;
|
||||||
|
private int mLightSensorWarmupTime;
|
||||||
|
|
||||||
// Used when logging number and duration of touch-down cycles
|
// Used when logging number and duration of touch-down cycles
|
||||||
private long mTotalTouchDownTime;
|
private long mTotalTouchDownTime;
|
||||||
@@ -456,6 +461,8 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
com.android.internal.R.array.config_autoBrightnessButtonBacklightValues);
|
com.android.internal.R.array.config_autoBrightnessButtonBacklightValues);
|
||||||
mKeyboardBacklightValues = resources.getIntArray(
|
mKeyboardBacklightValues = resources.getIntArray(
|
||||||
com.android.internal.R.array.config_autoBrightnessKeyboardBacklightValues);
|
com.android.internal.R.array.config_autoBrightnessKeyboardBacklightValues);
|
||||||
|
mLightSensorWarmupTime = resources.getInteger(
|
||||||
|
com.android.internal.R.integer.config_lightSensorWarmupTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
ContentResolver resolver = mContext.getContentResolver();
|
ContentResolver resolver = mContext.getContentResolver();
|
||||||
@@ -886,6 +893,7 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
pw.println(" mPreventScreenOn=" + mPreventScreenOn
|
pw.println(" mPreventScreenOn=" + mPreventScreenOn
|
||||||
+ " mScreenBrightnessOverride=" + mScreenBrightnessOverride);
|
+ " mScreenBrightnessOverride=" + mScreenBrightnessOverride);
|
||||||
pw.println(" mTotalDelaySetting=" + mTotalDelaySetting);
|
pw.println(" mTotalDelaySetting=" + mTotalDelaySetting);
|
||||||
|
pw.println(" mLastScreenOnTime=" + mLastScreenOnTime);
|
||||||
pw.println(" mBroadcastWakeLock=" + mBroadcastWakeLock);
|
pw.println(" mBroadcastWakeLock=" + mBroadcastWakeLock);
|
||||||
pw.println(" mStayOnWhilePluggedInScreenDimLock=" + mStayOnWhilePluggedInScreenDimLock);
|
pw.println(" mStayOnWhilePluggedInScreenDimLock=" + mStayOnWhilePluggedInScreenDimLock);
|
||||||
pw.println(" mStayOnWhilePluggedInPartialLock=" + mStayOnWhilePluggedInPartialLock);
|
pw.println(" mStayOnWhilePluggedInPartialLock=" + mStayOnWhilePluggedInPartialLock);
|
||||||
@@ -1299,7 +1307,9 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
|
|
||||||
private int setScreenStateLocked(boolean on) {
|
private int setScreenStateLocked(boolean on) {
|
||||||
int err = Power.setScreenState(on);
|
int err = Power.setScreenState(on);
|
||||||
if (err == 0 && mUseSoftwareAutoBrightness) {
|
if (err == 0) {
|
||||||
|
mLastScreenOnTime = (on ? SystemClock.elapsedRealtime() : 0);
|
||||||
|
if (mUseSoftwareAutoBrightness) {
|
||||||
enableLightSensor(on);
|
enableLightSensor(on);
|
||||||
if (!on) {
|
if (!on) {
|
||||||
// make sure button and key backlights are off too
|
// make sure button and key backlights are off too
|
||||||
@@ -1310,6 +1320,7 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
mLightSensorValue = -1;
|
mLightSensorValue = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2431,13 +2442,15 @@ class PowerManagerService extends IPowerManager.Stub
|
|||||||
public void onSensorChanged(SensorEvent event) {
|
public void onSensorChanged(SensorEvent event) {
|
||||||
synchronized (mLocks) {
|
synchronized (mLocks) {
|
||||||
int value = (int)event.values[0];
|
int value = (int)event.values[0];
|
||||||
|
long milliseconds = event.timestamp / 1000000;
|
||||||
if (mDebugLightSensor) {
|
if (mDebugLightSensor) {
|
||||||
Log.d(TAG, "onSensorChanged: light value: " + value);
|
Log.d(TAG, "onSensorChanged: light value: " + value);
|
||||||
}
|
}
|
||||||
mHandler.removeCallbacks(mAutoBrightnessTask);
|
mHandler.removeCallbacks(mAutoBrightnessTask);
|
||||||
if (mLightSensorValue != value) {
|
if (mLightSensorValue != value) {
|
||||||
if (mLightSensorValue == -1) {
|
if (mLightSensorValue == -1 ||
|
||||||
// process the value immediately
|
milliseconds < mLastScreenOnTime + mLightSensorWarmupTime) {
|
||||||
|
// process the value immediately if screen has just turned on
|
||||||
lightSensorChangedLocked(value);
|
lightSensorChangedLocked(value);
|
||||||
} else {
|
} else {
|
||||||
// delay processing to debounce the sensor
|
// delay processing to debounce the sensor
|
||||||
|
|||||||
Reference in New Issue
Block a user