summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mike Lockwood <lockwood@android.com> 2009-11-05 20:53:00 -0500
committer Mike Lockwood <lockwood@android.com> 2009-11-06 08:28:19 -0500
commit0d72f7e9fc0d6f774eda5758d111bec5608bcf42 (patch)
treee18b098f7449d1d18822b7087241218fa13cebe5
parent092f03418a4988e4da706dca27128327b5a5fc55 (diff)
Fix a race condition that could result in the screen being forced off indefinitely after a phone call.
This should fix a "black screen" bug that Motorola identified. mProximitySensorActive was being set to true due to a proximity sensor change being posted just after we disabled the proximity sensor. Now we ignore proximity changes after the phone app releases the proximity lock after the call is done. Change-Id: I417d423de3d43515389b1b7b008cdcb795cd10f6 Signed-off-by: Mike Lockwood <lockwood@android.com>
-rw-r--r--services/java/com/android/server/PowerManagerService.java12
1 files changed, 7 insertions, 5 deletions
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index a03ac6c53e37..611a86e3576a 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -2349,11 +2349,9 @@ class PowerManagerService extends IPowerManager.Stub
} finally {
Binder.restoreCallingIdentity(identity);
}
- synchronized (mLocks) {
- if (mProximitySensorActive) {
- mProximitySensorActive = false;
- forceUserActivityLocked();
- }
+ if (mProximitySensorActive) {
+ mProximitySensorActive = false;
+ forceUserActivityLocked();
}
}
@@ -2361,6 +2359,10 @@ class PowerManagerService extends IPowerManager.Stub
if (mSpew) {
Log.d(TAG, "proximityChangedLocked, active: " + active);
}
+ if (mProximityCount <= 0) {
+ Log.d(TAG, "Ignoring proximity change after last proximity lock is released");
+ return;
+ }
if (active) {
goToSleepLocked(SystemClock.uptimeMillis());
mProximitySensorActive = true;