Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 200b30bb authored by Mike Lockwood's avatar Mike Lockwood
Browse files

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: default avatarMike Lockwood <lockwood@android.com>
parent 27272bfa
Loading
Loading
Loading
Loading
+15 −9
Original line number Diff line number Diff line
@@ -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);
        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();
            }
        }
    }