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

Commit a45ea754 authored by Michael Wright's avatar Michael Wright Committed by Automerger Merge Worker
Browse files

Merge "Release outstanding suspend blockers when shutting down DPC" into...

Merge "Release outstanding suspend blockers when shutting down DPC" into tm-dev am: 3a28a13e am: e2b26a18 am: 73c28b3e

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19053827



Change-Id: Ib383c5ca9d70cb65b6788739fd81a7c8fed1ad39
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents b0c536ee 73c28b3e
Loading
Loading
Loading
Loading
+39 −2
Original line number Original line Diff line number Diff line
@@ -461,6 +461,18 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call


    private boolean mIsRbcActive;
    private boolean mIsRbcActive;


    // Whether there's a callback to tell listeners the display has changed scheduled to run. When
    // true it implies a wakelock is being held to guarantee the update happens before we collapse
    // into suspend and so needs to be cleaned up if the thread is exiting.
    // Should only be accessed on the Handler thread.
    private boolean mOnStateChangedPending;

    // Count of proximity messages currently on this DPC's Handler. Used to keep track of how many
    // suspend blocker acquisitions are pending when shutting down this DPC.
    // Should only be accessed on the Handler thread.
    private int mOnProximityPositiveMessages;
    private int mOnProximityNegativeMessages;

    // Animators.
    // Animators.
    private ObjectAnimator mColorFadeOnAnimator;
    private ObjectAnimator mColorFadeOnAnimator;
    private ObjectAnimator mColorFadeOffAnimator;
    private ObjectAnimator mColorFadeOffAnimator;
@@ -1091,10 +1103,24 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        mHbmController.stop();
        mHbmController.stop();
        mBrightnessThrottler.stop();
        mBrightnessThrottler.stop();
        mHandler.removeCallbacksAndMessages(null);
        mHandler.removeCallbacksAndMessages(null);

        // Release any outstanding wakelocks we're still holding because of pending messages.
        if (mUnfinishedBusiness) {
        if (mUnfinishedBusiness) {
            mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdUnfinishedBusiness);
            mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdUnfinishedBusiness);
            mUnfinishedBusiness = false;
            mUnfinishedBusiness = false;
        }
        }
        if (mOnStateChangedPending) {
            mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdOnStateChanged);
            mOnStateChangedPending = false;
        }
        for (int i = 0; i < mOnProximityPositiveMessages; i++) {
            mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdProxPositive);
        }
        mOnProximityPositiveMessages = 0;
        for (int i = 0; i < mOnProximityNegativeMessages; i++) {
            mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdProxNegative);
        }
        mOnProximityNegativeMessages = 0;


        final float brightness = mPowerState != null
        final float brightness = mPowerState != null
            ? mPowerState.getScreenBrightness()
            ? mPowerState.getScreenBrightness()
@@ -2248,9 +2274,12 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
    }
    }


    private void sendOnStateChangedWithWakelock() {
    private void sendOnStateChangedWithWakelock() {
        if (!mOnStateChangedPending) {
            mOnStateChangedPending = true;
            mCallbacks.acquireSuspendBlocker(mSuspendBlockerIdOnStateChanged);
            mCallbacks.acquireSuspendBlocker(mSuspendBlockerIdOnStateChanged);
            mHandler.post(mOnStateChangedRunnable);
            mHandler.post(mOnStateChangedRunnable);
        }
        }
    }


    private void logDisplayPolicyChanged(int newPolicy) {
    private void logDisplayPolicyChanged(int newPolicy) {
        LogMaker log = new LogMaker(MetricsEvent.DISPLAY_POLICY);
        LogMaker log = new LogMaker(MetricsEvent.DISPLAY_POLICY);
@@ -2408,6 +2437,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
    private final Runnable mOnStateChangedRunnable = new Runnable() {
    private final Runnable mOnStateChangedRunnable = new Runnable() {
        @Override
        @Override
        public void run() {
        public void run() {
            mOnStateChangedPending = false;
            mCallbacks.onStateChanged();
            mCallbacks.onStateChanged();
            mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdOnStateChanged);
            mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdOnStateChanged);
        }
        }
@@ -2416,17 +2446,20 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
    private void sendOnProximityPositiveWithWakelock() {
    private void sendOnProximityPositiveWithWakelock() {
        mCallbacks.acquireSuspendBlocker(mSuspendBlockerIdProxPositive);
        mCallbacks.acquireSuspendBlocker(mSuspendBlockerIdProxPositive);
        mHandler.post(mOnProximityPositiveRunnable);
        mHandler.post(mOnProximityPositiveRunnable);
        mOnProximityPositiveMessages++;
    }
    }


    private final Runnable mOnProximityPositiveRunnable = new Runnable() {
    private final Runnable mOnProximityPositiveRunnable = new Runnable() {
        @Override
        @Override
        public void run() {
        public void run() {
            mOnProximityPositiveMessages--;
            mCallbacks.onProximityPositive();
            mCallbacks.onProximityPositive();
            mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdProxPositive);
            mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdProxPositive);
        }
        }
    };
    };


    private void sendOnProximityNegativeWithWakelock() {
    private void sendOnProximityNegativeWithWakelock() {
        mOnProximityNegativeMessages++;
        mCallbacks.acquireSuspendBlocker(mSuspendBlockerIdProxNegative);
        mCallbacks.acquireSuspendBlocker(mSuspendBlockerIdProxNegative);
        mHandler.post(mOnProximityNegativeRunnable);
        mHandler.post(mOnProximityNegativeRunnable);
    }
    }
@@ -2434,6 +2467,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
    private final Runnable mOnProximityNegativeRunnable = new Runnable() {
    private final Runnable mOnProximityNegativeRunnable = new Runnable() {
        @Override
        @Override
        public void run() {
        public void run() {
            mOnProximityNegativeMessages--;
            mCallbacks.onProximityNegative();
            mCallbacks.onProximityNegative();
            mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdProxNegative);
            mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdProxNegative);
        }
        }
@@ -2533,6 +2567,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        pw.println("  mReportedToPolicy="
        pw.println("  mReportedToPolicy="
                + reportedToPolicyToString(mReportedScreenStateToPolicy));
                + reportedToPolicyToString(mReportedScreenStateToPolicy));
        pw.println("  mIsRbcActive=" + mIsRbcActive);
        pw.println("  mIsRbcActive=" + mIsRbcActive);
        pw.println("  mOnStateChangePending=" + mOnStateChangedPending);
        pw.println("  mOnProximityPositiveMessages=" + mOnProximityPositiveMessages);
        pw.println("  mOnProximityNegativeMessages=" + mOnProximityNegativeMessages);


        if (mScreenBrightnessRampAnimator != null) {
        if (mScreenBrightnessRampAnimator != null) {
            pw.println("  mScreenBrightnessRampAnimator.isAnimating()="
            pw.println("  mScreenBrightnessRampAnimator.isAnimating()="