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

Commit 1946b312 authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Ignore prox data when it's obsolete

The proximity sensor response is asynchronous, this means
that the user might have interacted with the phone while
sensor data is being processed. Let's ignore its response
in case it arrives late.

Fixes: 129012983
Test: press power while uncovering prox sensor
Change-Id: Ib31e6c53b9f5993349c5eaed6122af5228d07728
parent 2e5dd8cf
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -211,7 +211,7 @@ public class DozeMachine {
        mDozeService.requestWakeUp();
    }

    private boolean isExecutingTransition() {
    public boolean isExecutingTransition() {
        return !mQueuedRequests.isEmpty();
    }

+8 −0
Original line number Diff line number Diff line
@@ -198,6 +198,14 @@ public class DozeTriggers implements DozeMachine.Part {
    }

    private void onProximityFar(boolean far) {
        // Proximity checks are asynchronous and the user might have interacted with the phone
        // when a new event is arriving. This means that a state transition might have happened
        // and the proximity check is now obsolete.
        if (mMachine.isExecutingTransition()) {
            Log.w(TAG, "onProximityFar called during transition. Ignoring sensor response.");
            return;
        }

        final boolean near = !far;
        final DozeMachine.State state = mMachine.getState();
        final boolean paused = (state == DozeMachine.State.DOZE_AOD_PAUSED);