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>
This commit is contained in:
Mike Lockwood
2009-09-20 00:23:59 -04:00
parent 27272bfac6
commit 200b30bba5

View File

@@ -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();
}
}
}