Delay awaken from Dream to avoid wallpaper flickering.

Bug: 240452659
Fix: 240452659
Test: repeatedly unlocking from Dream.
Change-Id: Iba6ee6fcfce9083f4e348c5f4ad60903262f3705
This commit is contained in:
Xiaowen Lei
2022-08-19 00:26:05 +00:00
parent f676e7d731
commit af7d8a3125
2 changed files with 13 additions and 5 deletions

View File

@@ -2383,10 +2383,10 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable,
private void handleHide() {
Trace.beginSection("KeyguardViewMediator#handleHide");
// It's possible that the device was unlocked in a dream state. It's time to wake up.
if (mAodShowing || mDreamOverlayShowing) {
PowerManager pm = mContext.getSystemService(PowerManager.class);
pm.wakeUp(SystemClock.uptimeMillis(), PowerManager.WAKE_REASON_GESTURE,
// It's possible that the device was unlocked (via BOUNCER) while dozing. It's time to
// wake up.
if (mAodShowing) {
mPM.wakeUp(SystemClock.uptimeMillis(), PowerManager.WAKE_REASON_GESTURE,
"com.android.systemui:BOUNCER_DOZING");
}
@@ -2415,6 +2415,13 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable,
null /* nonApps */, null /* finishedCallback */);
});
}
// It's possible that the device was unlocked (via BOUNCER or Fingerprint) while
// dreaming. It's time to wake up.
if (mDreamOverlayShowing) {
mPM.wakeUp(SystemClock.uptimeMillis(), PowerManager.WAKE_REASON_GESTURE,
"com.android.systemui:UNLOCK_DREAMING");
}
}
Trace.endSection();
}

View File

@@ -512,7 +512,8 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
Trace.beginSection("MODE_WAKE_AND_UNLOCK");
} else {
Trace.beginSection("MODE_WAKE_AND_UNLOCK_FROM_DREAM");
mUpdateMonitor.awakenFromDream();
// Don't call awaken from Dream here. In order to avoid flickering, wait until
// later to awaken.
}
mNotificationShadeWindowController.setNotificationShadeFocusable(false);
mKeyguardViewMediator.onWakeAndUnlocking();