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
This commit is contained in:
@ -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)) {
|
||||
|
@ -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());
|
||||
|
Reference in New Issue
Block a user