From 4c15784756a79d2c6a9b0aa35f4aefd29dfe9ddb Mon Sep 17 00:00:00 2001 From: Evan Rosky Date: Wed, 11 May 2022 14:14:36 -0700 Subject: show WSA when ready when using shell transitions Legacy transitions seems to show WSA a frame after the drawing finishes (updateAllDrawn runs after commitFinishDrawingLocked and the condition canShowWindows() depends on allDrawn). Shell transitions doesn't use allDrawn and instead uses BLASTSyncEngine. So, don't delay WSA otherwise the WSA show won't be on the sync transaction. Bug: 230495892 Test: atest AnimationEdgeExtensionTests Change-Id: I8b7596085e57b2e3ddaea05e6893b7099cd49e3a --- services/core/java/com/android/server/wm/ActivityRecord.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 96478272a8d5..54955a94d5d6 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -4468,8 +4468,12 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A * color mode set to avoid jank in the middle of the transition. */ boolean canShowWindows() { - return allDrawn && !(isAnimating(PARENTS, ANIMATION_TYPE_APP_TRANSITION) - && hasNonDefaultColorWindow()); + final boolean drawn = mTransitionController.isShellTransitionsEnabled() + ? mSyncState != SYNC_STATE_WAITING_FOR_DRAW : allDrawn; + final boolean animating = mTransitionController.isShellTransitionsEnabled() + ? mTransitionController.inTransition(this) + : isAnimating(PARENTS, ANIMATION_TYPE_APP_TRANSITION); + return drawn && !(animating && hasNonDefaultColorWindow()); } /** -- cgit v1.2.3-59-g8ed1b