[DO NOT MERGE] Move onDrawn callback earlier
The new remote animation flow is waiting for the onDrawn callback to be issues before triggering the exit animation. This means for wakeAndUnlock flows, onDrawn cannot wait for the exit animation to begin. Remove all code that put this callback into a pending state. Also remove BiometricUnlockController delay. This causes a poor animation experience when unlocking with devices (sunfish) that delay the unlock. Fixes: 220340156 Test: atest KeyguardViewMediatorTest && Use rear FPS devices with AoD on/off Change-Id: I6129c9d1fea76f8dded2a8d567c75fb21085a5dd
This commit is contained in:
@@ -210,7 +210,6 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable,
|
||||
private static final int KEYGUARD_DONE_PENDING_TIMEOUT = 13;
|
||||
private static final int NOTIFY_STARTED_WAKING_UP = 14;
|
||||
private static final int NOTIFY_SCREEN_TURNED_ON = 15;
|
||||
private static final int NOTIFY_SCREEN_TURNED_OFF = 16;
|
||||
private static final int NOTIFY_STARTED_GOING_TO_SLEEP = 17;
|
||||
private static final int SYSTEM_READY = 18;
|
||||
private static final int CANCEL_KEYGUARD_EXIT_ANIM = 19;
|
||||
@@ -441,7 +440,6 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable,
|
||||
private boolean mInGestureNavigationMode;
|
||||
|
||||
private boolean mWakeAndUnlocking;
|
||||
private IKeyguardDrawnCallback mDrawnCallback;
|
||||
private CharSequence mCustomMessage;
|
||||
|
||||
/**
|
||||
@@ -1264,7 +1262,6 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable,
|
||||
}
|
||||
|
||||
public void onScreenTurnedOff() {
|
||||
notifyScreenTurnedOff();
|
||||
mUpdateMonitor.dispatchScreenTurnedOff();
|
||||
}
|
||||
|
||||
@@ -1668,12 +1665,6 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable,
|
||||
mHandler.sendMessage(msg);
|
||||
}
|
||||
|
||||
private void notifyScreenTurnedOff() {
|
||||
if (DEBUG) Log.d(TAG, "notifyScreenTurnedOff");
|
||||
Message msg = mHandler.obtainMessage(NOTIFY_SCREEN_TURNED_OFF);
|
||||
mHandler.sendMessage(msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send message to keyguard telling it to show itself
|
||||
* @see #handleShow
|
||||
@@ -1861,9 +1852,6 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable,
|
||||
handleNotifyScreenTurnedOn();
|
||||
Trace.endSection();
|
||||
break;
|
||||
case NOTIFY_SCREEN_TURNED_OFF:
|
||||
handleNotifyScreenTurnedOff();
|
||||
break;
|
||||
case NOTIFY_STARTED_WAKING_UP:
|
||||
Trace.beginSection(
|
||||
"KeyguardViewMediator#handleMessage NOTIFY_STARTED_WAKING_UP");
|
||||
@@ -2245,16 +2233,6 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable,
|
||||
IRemoteAnimationRunner runner = mKeyguardExitAnimationRunner;
|
||||
mKeyguardExitAnimationRunner = null;
|
||||
|
||||
if (mWakeAndUnlocking && mDrawnCallback != null) {
|
||||
|
||||
// Hack level over 9000: To speed up wake-and-unlock sequence, force it to report
|
||||
// the next draw from here so we don't have to wait for window manager to signal
|
||||
// this to our ViewRootImpl.
|
||||
mKeyguardViewControllerLazy.get().getViewRootImpl().setReportNextDraw();
|
||||
notifyDrawn(mDrawnCallback);
|
||||
mDrawnCallback = null;
|
||||
}
|
||||
|
||||
LatencyTracker.getInstance(mContext)
|
||||
.onActionEnd(LatencyTracker.ACTION_LOCKSCREEN_UNLOCK);
|
||||
|
||||
@@ -2610,11 +2588,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable,
|
||||
|
||||
mKeyguardViewControllerLazy.get().onScreenTurningOn();
|
||||
if (callback != null) {
|
||||
if (mWakeAndUnlocking) {
|
||||
mDrawnCallback = callback;
|
||||
} else {
|
||||
notifyDrawn(callback);
|
||||
}
|
||||
notifyDrawn(callback);
|
||||
}
|
||||
}
|
||||
Trace.endSection();
|
||||
@@ -2629,13 +2603,6 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable,
|
||||
Trace.endSection();
|
||||
}
|
||||
|
||||
private void handleNotifyScreenTurnedOff() {
|
||||
synchronized (this) {
|
||||
if (DEBUG) Log.d(TAG, "handleNotifyScreenTurnedOff");
|
||||
mDrawnCallback = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void notifyDrawn(final IKeyguardDrawnCallback callback) {
|
||||
Trace.beginSection("KeyguardViewMediator#notifyDrawn");
|
||||
if (mPendingDrawnTasks.decrementAndGet() == 0) {
|
||||
@@ -2804,7 +2771,6 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable,
|
||||
pw.print(" mPendingLock: "); pw.println(mPendingLock);
|
||||
pw.print(" mPendingDrawnTasks: "); pw.println(mPendingDrawnTasks.get());
|
||||
pw.print(" mWakeAndUnlocking: "); pw.println(mWakeAndUnlocking);
|
||||
pw.print(" mDrawnCallback: "); pw.println(mDrawnCallback);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -405,7 +405,6 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
|
||||
// During wake and unlock, we need to draw black before waking up to avoid abrupt
|
||||
// brightness changes due to display state transitions.
|
||||
boolean alwaysOnEnabled = mDozeParameters.getAlwaysOn();
|
||||
boolean delayWakeUp = mode == MODE_WAKE_AND_UNLOCK && alwaysOnEnabled && mWakeUpDelay > 0;
|
||||
Runnable wakeUp = ()-> {
|
||||
if (!wasDeviceInteractive) {
|
||||
if (DEBUG_BIO_WAKELOCK) {
|
||||
@@ -414,15 +413,12 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
|
||||
mPowerManager.wakeUp(SystemClock.uptimeMillis(), PowerManager.WAKE_REASON_GESTURE,
|
||||
"android.policy:BIOMETRIC");
|
||||
}
|
||||
if (delayWakeUp) {
|
||||
mKeyguardViewMediator.onWakeAndUnlocking();
|
||||
}
|
||||
Trace.beginSection("release wake-and-unlock");
|
||||
releaseBiometricWakeLock();
|
||||
Trace.endSection();
|
||||
};
|
||||
|
||||
if (!delayWakeUp && mMode != MODE_NONE) {
|
||||
if (mMode != MODE_NONE) {
|
||||
wakeUp.run();
|
||||
}
|
||||
switch (mMode) {
|
||||
@@ -472,11 +468,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
|
||||
mUpdateMonitor.awakenFromDream();
|
||||
}
|
||||
mNotificationShadeWindowController.setNotificationShadeFocusable(false);
|
||||
if (delayWakeUp) {
|
||||
mHandler.postDelayed(wakeUp, mWakeUpDelay);
|
||||
} else {
|
||||
mKeyguardViewMediator.onWakeAndUnlocking();
|
||||
}
|
||||
mKeyguardViewMediator.onWakeAndUnlocking();
|
||||
Trace.endSection();
|
||||
break;
|
||||
case MODE_ONLY_WAKE:
|
||||
|
||||
Reference in New Issue
Block a user