Defer remove splash screen window if it is inTransition.
When another transition happen after first open app transition, e.g. create task fragment, the surface of app window may shown after transition start. If we remove starting window right after app report drawn, there might show a blank while transition is playing. Bug: 276692049 Test: manual launch app from notification shade several times, verify no blank window occur. Change-Id: If606fe2cab78143b1a80c1819088d67b6396a953
This commit is contained in:
committed by
Wei Sheng Shih
parent
f3f8e10b3b
commit
e4633f88bc
@@ -2865,11 +2865,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
|
||||
return;
|
||||
}
|
||||
|
||||
if (animate && mTransitionController.inCollectingTransition(startingWindow)
|
||||
&& startingWindow.cancelAndRedraw()) {
|
||||
if (animate && mTransitionController.inCollectingTransition(startingWindow)) {
|
||||
// Defer remove starting window after transition start.
|
||||
// If splash screen window was in collecting, the client side is unable to draw because
|
||||
// of Session#cancelDraw, which will blocking the remove animation.
|
||||
// The surface of app window could really show after the transition finish.
|
||||
startingWindow.mSyncTransaction.addTransactionCommittedListener(Runnable::run, () -> {
|
||||
synchronized (mAtmService.mGlobalLock) {
|
||||
surface.remove(true);
|
||||
|
||||
Reference in New Issue
Block a user