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

Commit c3a2eeae authored by Josh Tsuji's avatar Josh Tsuji
Browse files

Don't re-hide the keyguard if it isn't showing.

This has a horrifying and unpredictable side effect of triggering
post-unlock Runnables that are stored in StatusBar.java, which can
result in a blank screen on unlock in certain race conditions.

Test: unlock, launch an app during the unlock animation, press power, wake up at bad time
Test: I wrote a custom build to force the above scenario to verify this works
Fixes: 214647311
Merged-In: I00655c2e85c46bd0c52b77094757e155b1a6f9c9
Change-Id: I9261ab9f04cc06db379676dccca72e452ece98d7
parent 28fccbd8
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.animation.AnimatorListenerAdapter
import android.animation.ValueAnimator
import android.content.Context
import android.graphics.Matrix
import android.util.Log
import android.view.RemoteAnimationTarget
import android.view.SyncRtSurfaceTransactionApplier
import android.view.View
@@ -38,6 +39,8 @@ import com.android.systemui.statusbar.policy.KeyguardStateController
import dagger.Lazy
import javax.inject.Inject

const val TAG = "KeyguardUnlock"

/**
 * Starting scale factor for the app/launcher surface behind the keyguard, when it's animating
 * in during keyguard exit.
@@ -254,7 +257,12 @@ class KeyguardUnlockAnimationController @Inject constructor(
    }

    fun hideKeyguardViewAfterRemoteAnimation() {
        if (keyguardViewController.isShowing) {
            keyguardViewController.hide(surfaceBehindRemoteAnimationStartTime, 350)
        } else {
            Log.e(TAG, "#hideKeyguardViewAfterRemoteAnimation called when keyguard view is not " +
                    "showing. Ignoring...")
        }
    }

    /**