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

Commit 6307a150 authored by Jeff Brown's avatar Jeff Brown
Browse files

Fix some proximity sensor bugs.

Forgot to clear waiting for proximity negative flag.
Waiting for proximity negative also shouldn't turn the screen off
if it is currently on.

Change-Id: I9885b2f54b185beb961acda44176bc5f11a9f58b
parent bf5740e7
Loading
Loading
Loading
Loading
+25 −14
Original line number Diff line number Diff line
@@ -479,11 +479,13 @@ final class DisplayPowerController {
            if (mPowerRequest == null) {
                mPowerRequest = new DisplayPowerRequest(mPendingRequestLocked);
                mWaitingForNegativeProximity = mPendingWaitForNegativeProximityLocked;
                mPendingWaitForNegativeProximityLocked = false;
                mPendingRequestChangedLocked = false;
                mustInitialize = true;
            } else if (mPendingRequestChangedLocked) {
                mPowerRequest.copyFrom(mPendingRequestLocked);
                mWaitingForNegativeProximity |= mPendingWaitForNegativeProximityLocked;
                mPendingWaitForNegativeProximityLocked = false;
                mPendingRequestChangedLocked = false;
                mDisplayReadyLocked = false;
            }
@@ -496,24 +498,33 @@ final class DisplayPowerController {
            initialize();
        }

        // Clear a request to wait for negative proximity if needed.
        if (mPowerRequest.screenState == DisplayPowerRequest.SCREEN_STATE_OFF
                || mProximity == PROXIMITY_NEGATIVE
                || mProximitySensor == null) {
            mWaitingForNegativeProximity = false;
        }

        // Turn on the proximity sensor if needed.
        // Apply the proximity sensor.
        if (mProximitySensor != null) {
            setProximitySensorEnabled(mPowerRequest.useProximitySensor
                    || mWaitingForNegativeProximity);
            if (mProximitySensorEnabled && mProximity == PROXIMITY_POSITIVE) {
            if (mPowerRequest.useProximitySensor
                    && mPowerRequest.screenState != DisplayPowerRequest.SCREEN_STATE_OFF) {
                setProximitySensorEnabled(true);
                if (!mScreenOffBecauseOfProximity
                        && mProximity == PROXIMITY_POSITIVE) {
                    mScreenOffBecauseOfProximity = true;
                    setScreenOn(false);
            } else if (mScreenOffBecauseOfProximity) {
                }
            } else if (mWaitingForNegativeProximity
                    && mScreenOffBecauseOfProximity
                    && mProximity == PROXIMITY_POSITIVE
                    && mPowerRequest.screenState != DisplayPowerRequest.SCREEN_STATE_OFF) {
                setProximitySensorEnabled(true);
            } else {
                setProximitySensorEnabled(false);
                mWaitingForNegativeProximity = false;
            }
            if (mScreenOffBecauseOfProximity
                    && mProximity != PROXIMITY_POSITIVE) {
                mScreenOffBecauseOfProximity = false;
                setScreenOn(true);
                sendOnProximityNegative();
            }
        } else {
            mWaitingForNegativeProximity = false;
        }

        // Turn on the light sensor if needed.