diff options
author | Mike Lockwood <lockwood@android.com> | 2009-09-20 00:23:59 -0400 |
---|---|---|
committer | Mike Lockwood <lockwood@android.com> | 2009-09-20 00:23:59 -0400 |
commit | 200b30bba53412919d2b5b4b85c02727b87f51df (patch) | |
tree | 860fb249ab78682871fa1afc77edbc372bd5bba7 | |
parent | 27272bfac63fab28aa3899243dfe79f226445b3b (diff) | |
download | frameworks_base-200b30bba53412919d2b5b4b85c02727b87f51df.zip frameworks_base-200b30bba53412919d2b5b4b85c02727b87f51df.tar.gz frameworks_base-200b30bba53412919d2b5b4b85c02727b87f51df.tar.bz2 |
Wake the screen if the proximity wakelock is released while the proximity sensor is active.
This fixes a problem that resulted in the screen staying off indefinitely if the prox sensor
is active at the beginning of a bluetooth call and could result in the screen staying off
in other similar circumstances.
Change-Id: Icfa0046d3179f9bb2247e7a3c1f9ff073312667a
Signed-off-by: Mike Lockwood <lockwood@android.com>
-rw-r--r-- | services/java/com/android/server/PowerManagerService.java | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index 84250bc..656d6ba 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -304,10 +304,7 @@ class PowerManagerService extends IPowerManager.Stub // temporarily set mUserActivityAllowed to true so this will work // even when the keyguard is on. synchronized (mLocks) { - boolean savedActivityAllowed = mUserActivityAllowed; - mUserActivityAllowed = true; - userActivity(SystemClock.uptimeMillis(), false); - mUserActivityAllowed = savedActivityAllowed; + forceUserActivityLocked(); } } } @@ -1714,6 +1711,13 @@ class PowerManagerService extends IPowerManager.Stub } } + private void forceUserActivityLocked() { + boolean savedActivityAllowed = mUserActivityAllowed; + mUserActivityAllowed = true; + userActivity(SystemClock.uptimeMillis(), false); + mUserActivityAllowed = savedActivityAllowed; + } + public void userActivityWithForce(long time, boolean noChangeLights, boolean force) { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null); userActivity(time, noChangeLights, OTHER_EVENT, force); @@ -2114,7 +2118,12 @@ class PowerManagerService extends IPowerManager.Stub Log.d(TAG, "disableProximityLockLocked"); } mSensorManager.unregisterListener(this); - mProximitySensorActive = false; + synchronized (mLocks) { + if (mProximitySensorActive) { + mProximitySensorActive = false; + forceUserActivityLocked(); + } + } } public void onSensorChanged(SensorEvent event) { @@ -2135,10 +2144,7 @@ class PowerManagerService extends IPowerManager.Stub Log.d(TAG, "onSensorChanged: proximity inactive, distance: " + distance); } mProximitySensorActive = false; - boolean savedActivityAllowed = mUserActivityAllowed; - mUserActivityAllowed = true; - userActivity(milliseconds, false); - mUserActivityAllowed = savedActivityAllowed; + forceUserActivityLocked(); } } } |