Skip to content

Commit 6307a15

Browse files
author
Jeff Brown
committed
Fix some proximity sensor bugs.
Forgot to clear waiting for proximity negative flag. Waiting for proximity negative also shouldn't turn the screen off if it is currently on. Change-Id: I9885b2f54b185beb961acda44176bc5f11a9f58b
1 parent bf5740e commit 6307a15

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)