Merge "Adding debugging code for bug where recycled views still had parent" into jb-dev
diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
index 049e6ac..518d8e9 100644
--- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
+++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
@@ -532,11 +532,6 @@
         if (DEBUG) Log.d(TAG, "screen off");
         mScreenOn = false;
         mForgotPattern = false;
-        if (mBiometricUnlock != null) {
-            mSuppressBiometricUnlock =
-                    mUpdateMonitor.getPhoneState() != TelephonyManager.CALL_STATE_IDLE
-                    || mHasDialog;
-        }
 
         // Emulate activity life-cycle for both lock and unlock screen.
         if (mLockScreen != null) {
@@ -991,6 +986,17 @@
             restartBiometricUnlock = mBiometricUnlock.stop();
         }
 
+        // Prevents biometric unlock from coming up immediately after a phone call or if there
+        // is a dialog on top of lockscreen. It is only updated if the screen is off because if the
+        // screen is on it's either because of an orientation change, or when it first boots.
+        // In both those cases, we don't want to override the current value of
+        // mSuppressBiometricUnlock and instead want to use the previous value.
+        if (!mScreenOn) {
+            mSuppressBiometricUnlock =
+                    mUpdateMonitor.getPhoneState() != TelephonyManager.CALL_STATE_IDLE
+                    || mHasDialog;
+        }
+
         // If the biometric unlock is not being used, we don't bother constructing it.  Then we can
         // simply check if it is null when deciding whether we should make calls to it.
         mBiometricUnlock = null;