From 200b30bba53412919d2b5b4b85c02727b87f51df Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Sun, 20 Sep 2009 00:23:59 -0400 Subject: [PATCH] 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 --- .../android/server/PowerManagerService.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index 84250bce314d8..656d6ba616fac 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(); } } }