Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e4633f88 authored by wilsonshih's avatar wilsonshih Committed by Wei Sheng Shih
Browse files

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
parent f3f8e10b
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -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);