Skip to content

Commit 3fee5c6

Browse files
Jeff BrownAndroid (Google) Code Review
authored andcommitted
Merge "Fix some proximity sensor bugs." into jb-mr1-dev
2 parents 8756bd1 + 6307a15 commit 3fee5c6

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

services/java/com/android/server/power/DisplayPowerController.java

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -479,11 +479,13 @@ private void updatePowerState() {
479479
if (mPowerRequest == null) {
480480
mPowerRequest = new DisplayPowerRequest(mPendingRequestLocked);
481481
mWaitingForNegativeProximity = mPendingWaitForNegativeProximityLocked;
482+
mPendingWaitForNegativeProximityLocked = false;
482483
mPendingRequestChangedLocked = false;
483484
mustInitialize = true;
484485
} else if (mPendingRequestChangedLocked) {
485486
mPowerRequest.copyFrom(mPendingRequestLocked);
486487
mWaitingForNegativeProximity |= mPendingWaitForNegativeProximityLocked;
488+
mPendingWaitForNegativeProximityLocked = false;
487489
mPendingRequestChangedLocked = false;
488490
mDisplayReadyLocked = false;
489491
}
@@ -496,24 +498,33 @@ private void updatePowerState() {
496498
initialize();
497499
}
498500

499-
// Clear a request to wait for negative proximity if needed.
500-
if (mPowerRequest.screenState == DisplayPowerRequest.SCREEN_STATE_OFF
501-
|| mProximity == PROXIMITY_NEGATIVE
502-
|| mProximitySensor == null) {
503-
mWaitingForNegativeProximity = false;
504-
}
505-
506-
// Turn on the proximity sensor if needed.
501+
// Apply the proximity sensor.
507502
if (mProximitySensor != null) {
508-
setProximitySensorEnabled(mPowerRequest.useProximitySensor
509-
|| mWaitingForNegativeProximity);
510-
if (mProximitySensorEnabled && mProximity == PROXIMITY_POSITIVE) {
511-
mScreenOffBecauseOfProximity = true;
512-
setScreenOn(false);
513-
} else if (mScreenOffBecauseOfProximity) {
503+
if (mPowerRequest.useProximitySensor
504+
&& mPowerRequest.screenState != DisplayPowerRequest.SCREEN_STATE_OFF) {
505+
setProximitySensorEnabled(true);
506+
if (!mScreenOffBecauseOfProximity
507+
&& mProximity == PROXIMITY_POSITIVE) {
508+
mScreenOffBecauseOfProximity = true;
509+
setScreenOn(false);
510+
}
511+
} else if (mWaitingForNegativeProximity
512+
&& mScreenOffBecauseOfProximity
513+
&& mProximity == PROXIMITY_POSITIVE
514+
&& mPowerRequest.screenState != DisplayPowerRequest.SCREEN_STATE_OFF) {
515+
setProximitySensorEnabled(true);
516+
} else {
517+
setProximitySensorEnabled(false);
518+
mWaitingForNegativeProximity = false;
519+
}
520+
if (mScreenOffBecauseOfProximity
521+
&& mProximity != PROXIMITY_POSITIVE) {
514522
mScreenOffBecauseOfProximity = false;
523+
setScreenOn(true);
515524
sendOnProximityNegative();
516525
}
526+
} else {
527+
mWaitingForNegativeProximity = false;
517528
}
518529

519530
// Turn on the light sensor if needed.

0 commit comments

Comments
 (0)