Merge "Call KeyguardViewMediator#hideWithAnimation on the main thread" into sc-dev am: 0d0d1ae649
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14881283 Change-Id: I534df7366505da8a6e594d3f1e57e43e8f44fe0e
This commit is contained in:
@@ -1651,14 +1651,19 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable,
|
|||||||
Trace.endSection();
|
Trace.endSection();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Hide the keyguard and let {@code runner} handle the animation. */
|
/**
|
||||||
|
* Hide the keyguard and let {@code runner} handle the animation.
|
||||||
|
*
|
||||||
|
* This method should typically be called after {@link ViewMediatorCallback#keyguardDonePending}
|
||||||
|
* was called, when we are ready to hide the keyguard.
|
||||||
|
*/
|
||||||
public void hideWithAnimation(IRemoteAnimationRunner runner) {
|
public void hideWithAnimation(IRemoteAnimationRunner runner) {
|
||||||
if (!mShowing) {
|
if (!mKeyguardDonePending) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mKeyguardExitAnimationRunner = runner;
|
mKeyguardExitAnimationRunner = runner;
|
||||||
hideLocked();
|
mViewMediatorCallback.readyForKeyguardDone();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -2118,7 +2118,12 @@ public class StatusBar extends SystemUI implements DemoMode,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mKeyguardViewMediator.hideWithAnimation(runner);
|
// We post to the main thread for 2 reasons:
|
||||||
|
// 1. KeyguardViewMediator is not thread-safe.
|
||||||
|
// 2. To ensure that ViewMediatorCallback#keyguardDonePending is called before
|
||||||
|
// ViewMediatorCallback#readyForKeyguardDone. The wrong order could occur when doing
|
||||||
|
// dismissKeyguardThenExecute { hideKeyguardWithAnimation(runner) }.
|
||||||
|
mMainThreadHandler.post(() -> mKeyguardViewMediator.hideWithAnimation(runner));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user