diff options
author | Jeff Brown <jeffbrown@google.com> | 2012-08-20 13:24:23 -0700 |
---|---|---|
committer | Jeff Brown <jeffbrown@google.com> | 2012-08-20 13:25:08 -0700 |
commit | 6307a150d374cec7b20f80a68800bbf69f495839 (patch) | |
tree | b0aaa1b475518fdef8541c684925f524e882b449 /services/java/com/android/server/power/DisplayPowerController.java | |
parent | bf5740e75efd87ae0213486e78e029403804c6f0 (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.java | 39 |
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. |