From 96b645d043dfc296d2c83db1db4ffa74d500e244 Mon Sep 17 00:00:00 2001 From: Pablo Gamito Date: Wed, 27 Apr 2022 15:53:53 +0000 Subject: [PATCH] Only run Animation#setBackdropColor on overriden app transition Only setBackdropColor from overridePendingAppTransition when mNextAppTransitionType is NEXT_TRANSIT_TYPE_CUSTOM since that is when we want overridePendingAppTransition to take effect. And because mNextAppTransitionBackgroundColor is not cleared after overridePendingAppTransition is called be don't want to continue applying it to other transitions leading to a persistent background color. And in some cases a is null which leads to a NPE if overridePendingAppTransition was called at some point before. Bug: 229929107 Bug: 229822876 Bug: 222438428 Test: atest CtsWindowManagerDeviceTestCases:ActivityTransitionTests Change-Id: I39c768f147a0fafec063c3929974c280556997cc --- .../core/java/com/android/server/wm/AppTransition.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java index 68a09a6d4b9be..4f015d8d77a02 100644 --- a/services/core/java/com/android/server/wm/AppTransition.java +++ b/services/core/java/com/android/server/wm/AppTransition.java @@ -683,6 +683,9 @@ public class AppTransition implements Dump { } else if (mNextAppTransitionType == NEXT_TRANSIT_TYPE_CUSTOM) { a = mTransitionAnimation.loadAppTransitionAnimation(mNextAppTransitionPackage, enter ? mNextAppTransitionEnter : mNextAppTransitionExit); + if (mNextAppTransitionBackgroundColor != 0) { + a.setBackdropColor(mNextAppTransitionBackgroundColor); + } ProtoLog.v(WM_DEBUG_APP_TRANSITIONS_ANIM, "applyAnimation: anim=%s nextAppTransition=ANIM_CUSTOM transit=%s " + "isEntrance=%b Callers=%s", @@ -842,10 +845,6 @@ public class AppTransition implements Dump { } setAppTransitionFinishedCallbackIfNeeded(a); - if (mNextAppTransitionBackgroundColor != 0) { - a.setBackdropColor(mNextAppTransitionBackgroundColor); - } - return a; }