Remove unnecessary (and potentially problematic) call of notifyDefaultDisplayCallbacks.

Since the KEYGUARD_TIMEOUT message is sent to the handler before the
SHOW message, when handling KEYGUARD_TIMEOUT, mShowing is still false.
The notifyDefaultDisplayCallbacks is later called again in
setKeyguardShowing, after showing has been updated to true.

Also updated setKeyguardShowing to not call
notifyDefaultDisplayCallbacks when only aodShowing is different.

Bug: 221866693
Fix: 221866693
Test: manually on device with instructions in the bug.
Test: manually on device with added logging.

Change-Id: Ie43b1c629e94307a617fcf57c9ebc4ff3e982fbf
This commit is contained in:
Xiaowen Lei
2022-03-23 17:00:51 +00:00
parent 277ed260e4
commit ac8355b60e

View File

@@ -2009,7 +2009,6 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable,
case KEYGUARD_TIMEOUT: case KEYGUARD_TIMEOUT:
synchronized (KeyguardViewMediator.this) { synchronized (KeyguardViewMediator.this) {
doKeyguardLocked((Bundle) msg.obj); doKeyguardLocked((Bundle) msg.obj);
notifyDefaultDisplayCallbacks(mShowing);
} }
break; break;
case DISMISS: case DISMISS:
@@ -2955,14 +2954,18 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable,
private void setShowingLocked(boolean showing, boolean forceCallbacks) { private void setShowingLocked(boolean showing, boolean forceCallbacks) {
final boolean aodShowing = mDozing && !mScreenOnCoordinator.getWakeAndUnlocking(); final boolean aodShowing = mDozing && !mScreenOnCoordinator.getWakeAndUnlocking();
final boolean notifyDefaultDisplayCallbacks = showing != mShowing final boolean notifyDefaultDisplayCallbacks = showing != mShowing || forceCallbacks;
final boolean updateActivityLockScreenState = showing != mShowing
|| aodShowing != mAodShowing || forceCallbacks; || aodShowing != mAodShowing || forceCallbacks;
mShowing = showing; mShowing = showing;
mAodShowing = aodShowing; mAodShowing = aodShowing;
if (notifyDefaultDisplayCallbacks) { if (notifyDefaultDisplayCallbacks) {
notifyDefaultDisplayCallbacks(showing); notifyDefaultDisplayCallbacks(showing);
}
if (updateActivityLockScreenState) {
updateActivityLockScreenState(showing, aodShowing); updateActivityLockScreenState(showing, aodShowing);
} }
} }
private void notifyDefaultDisplayCallbacks(boolean showing) { private void notifyDefaultDisplayCallbacks(boolean showing) {