summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/power/DisplayPowerController.java
diff options
context:
space:
mode:
authorJeff Brown <jeffbrown@google.com>2012-08-20 13:24:23 -0700
committerJeff Brown <jeffbrown@google.com>2012-08-20 13:25:08 -0700
commit6307a150d374cec7b20f80a68800bbf69f495839 (patch)
treeb0aaa1b475518fdef8541c684925f524e882b449 /services/java/com/android/server/power/DisplayPowerController.java
parentbf5740e75efd87ae0213486e78e029403804c6f0 (diff)
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
Diffstat (limited to 'services/java/com/android/server/power/DisplayPowerController.java')
-rw-r--r--services/java/com/android/server/power/DisplayPowerController.java39
1 files changed, 25 insertions, 14 deletions
diff --git a/services/java/com/android/server/power/DisplayPowerController.java b/services/java/com/android/server/power/DisplayPowerController.java
index 1991cf177911..3e8f45763bac 100644
--- a/services/java/com/android/server/power/DisplayPowerController.java
+++ b/services/java/com/android/server/power/DisplayPowerController.java
@@ -479,11 +479,13 @@ final class DisplayPowerController {
if (mPowerRequest == null) {
mPowerRequest = new DisplayPowerRequest(mPendingRequestLocked);
mWaitingForNegativeProximity = mPendingWaitForNegativeProximityLocked;
+ mPendingWaitForNegativeProximityLocked = false;
mPendingRequestChangedLocked = false;
mustInitialize = true;
} else if (mPendingRequestChangedLocked) {
mPowerRequest.copyFrom(mPendingRequestLocked);
mWaitingForNegativeProximity |= mPendingWaitForNegativeProximityLocked;
+ mPendingWaitForNegativeProximityLocked = false;
mPendingRequestChangedLocked = false;
mDisplayReadyLocked = false;
}
@@ -496,24 +498,33 @@ final class DisplayPowerController {
initialize();
}
- // Clear a request to wait for negative proximity if needed.
- if (mPowerRequest.screenState == DisplayPowerRequest.SCREEN_STATE_OFF
- || mProximity == PROXIMITY_NEGATIVE
- || mProximitySensor == null) {
- mWaitingForNegativeProximity = false;
- }
-
- // Turn on the proximity sensor if needed.
+ // Apply the proximity sensor.
if (mProximitySensor != null) {
- setProximitySensorEnabled(mPowerRequest.useProximitySensor
- || mWaitingForNegativeProximity);
- if (mProximitySensorEnabled && mProximity == PROXIMITY_POSITIVE) {
- mScreenOffBecauseOfProximity = true;
- setScreenOn(false);
- } else if (mScreenOffBecauseOfProximity) {
+ if (mPowerRequest.useProximitySensor
+ && mPowerRequest.screenState != DisplayPowerRequest.SCREEN_STATE_OFF) {
+ setProximitySensorEnabled(true);
+ if (!mScreenOffBecauseOfProximity
+ && mProximity == PROXIMITY_POSITIVE) {
+ 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;
+ setScreenOn(true);
sendOnProximityNegative();
}
+ } else {
+ mWaitingForNegativeProximity = false;
}
// Turn on the light sensor if needed.