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

Commit 53c68a44 authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

Fix bug when Keyguard gets hidden.

We make sure in Keyguard that we only hide ourselves in
startKeyguardExitAnimation ourselves when we requested a hide.

In addition, this change also fixes a bug in WindowAnimator that
it should only call startKeyguardExitAnimation when Keyguard actually
requested a hide.

Bug: 15676717
Change-Id: I2279cccb9916985b7e9a2f41137878be5782cb9c
parent 1f681448
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -238,6 +238,12 @@ public class KeyguardViewMediator extends SystemUI {
    // last known state of the cellular connection
    private String mPhoneState = TelephonyManager.EXTRA_STATE_IDLE;

    /**
     * Whether a hide is pending an we are just waiting for #startKeyguardExitAnimation to be
     * called.
     * */
    private boolean mHiding;

    /**
     * we send this intent when the keyguard is dismissed.
     */
@@ -1169,6 +1175,7 @@ public class KeyguardViewMediator extends SystemUI {
            }

            mStatusBarKeyguardViewManager.show(options);
            mHiding = false;
            mShowing = true;
            mKeyguardDonePending = false;
            updateActivityLockScreenState();
@@ -1191,7 +1198,7 @@ public class KeyguardViewMediator extends SystemUI {
        synchronized (KeyguardViewMediator.this) {
            if (DEBUG) Log.d(TAG, "handleHide");
            try {

                mHiding = true;
                if (mShowing) {

                    // Don't actually hide the Keyguard at the moment, wait for window manager until
@@ -1212,6 +1219,11 @@ public class KeyguardViewMediator extends SystemUI {
    private void handleStartKeyguardExitAnimation(long startTime, long fadeoutDuration) {
        synchronized (KeyguardViewMediator.this) {

            if (!mHiding) {
                return;
            }
            mHiding = false;

            // only play "unlock" noises if not on a call (since the incall UI
            // disables the keyguard)
            if (TelephonyManager.EXTRA_STATE_IDLE.equals(mPhoneState)) {
+1 −1
Original line number Diff line number Diff line
@@ -391,7 +391,7 @@ public class WindowAnimator {
                    final WindowStateAnimator winAnimator = unForceHiding.get(i);
                    winAnimator.setAnimation(a);
                    winAnimator.mAnimationIsEntrance = true;
                    if (startKeyguardExit) {
                    if (startKeyguardExit && mKeyguardGoingAway) {
                        // Do one time only.
                        mPolicy.startKeyguardExitAnimation(mCurrentTime + a.getStartOffset(),
                                a.getDuration());