Merge "Fix some proximity sensor bugs." into jb-mr1-dev

This commit is contained in:
Jeff Brown
2012-08-20 14:59:18 -07:00
committed by Android (Google) Code Review

View File

@@ -479,11 +479,13 @@ final class DisplayPowerController {
if (mPowerRequest == null) { if (mPowerRequest == null) {
mPowerRequest = new DisplayPowerRequest(mPendingRequestLocked); mPowerRequest = new DisplayPowerRequest(mPendingRequestLocked);
mWaitingForNegativeProximity = mPendingWaitForNegativeProximityLocked; mWaitingForNegativeProximity = mPendingWaitForNegativeProximityLocked;
mPendingWaitForNegativeProximityLocked = false;
mPendingRequestChangedLocked = false; mPendingRequestChangedLocked = false;
mustInitialize = true; mustInitialize = true;
} else if (mPendingRequestChangedLocked) { } else if (mPendingRequestChangedLocked) {
mPowerRequest.copyFrom(mPendingRequestLocked); mPowerRequest.copyFrom(mPendingRequestLocked);
mWaitingForNegativeProximity |= mPendingWaitForNegativeProximityLocked; mWaitingForNegativeProximity |= mPendingWaitForNegativeProximityLocked;
mPendingWaitForNegativeProximityLocked = false;
mPendingRequestChangedLocked = false; mPendingRequestChangedLocked = false;
mDisplayReadyLocked = false; mDisplayReadyLocked = false;
} }
@@ -496,24 +498,33 @@ final class DisplayPowerController {
initialize(); initialize();
} }
// Clear a request to wait for negative proximity if needed. // Apply the proximity sensor.
if (mPowerRequest.screenState == DisplayPowerRequest.SCREEN_STATE_OFF
|| mProximity == PROXIMITY_NEGATIVE
|| mProximitySensor == null) {
mWaitingForNegativeProximity = false;
}
// Turn on the proximity sensor if needed.
if (mProximitySensor != null) { if (mProximitySensor != null) {
setProximitySensorEnabled(mPowerRequest.useProximitySensor if (mPowerRequest.useProximitySensor
|| mWaitingForNegativeProximity); && mPowerRequest.screenState != DisplayPowerRequest.SCREEN_STATE_OFF) {
if (mProximitySensorEnabled && mProximity == PROXIMITY_POSITIVE) { setProximitySensorEnabled(true);
mScreenOffBecauseOfProximity = true; if (!mScreenOffBecauseOfProximity
setScreenOn(false); && mProximity == PROXIMITY_POSITIVE) {
} else if (mScreenOffBecauseOfProximity) { mScreenOffBecauseOfProximity = true;
setScreenOn(false);
}
} else if (mWaitingForNegativeProximity
&& mScreenOffBecauseOfProximity
&& mProximity == PROXIMITY_POSITIVE
&& mPowerRequest.screenState != DisplayPowerRequest.SCREEN_STATE_OFF) {
setProximitySensorEnabled(true);
} else {
setProximitySensorEnabled(false);
mWaitingForNegativeProximity = false;
}
if (mScreenOffBecauseOfProximity
&& mProximity != PROXIMITY_POSITIVE) {
mScreenOffBecauseOfProximity = false; mScreenOffBecauseOfProximity = false;
setScreenOn(true);
sendOnProximityNegative(); sendOnProximityNegative();
} }
} else {
mWaitingForNegativeProximity = false;
} }
// Turn on the light sensor if needed. // Turn on the light sensor if needed.