summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2021-10-05 12:06:53 -0700
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-12-25 00:33:40 +0000
commit5d279cefacdc508d4a764e66ffe2e9d498a8624b (patch)
tree7b24413310aee2e580afa16f901486d1fd30ca0e
parent6a8c887ff758c36a0db2929e3e74e456d339cedc (diff)
downloadbase-5d279cefacdc508d4a764e66ffe2e9d498a8624b.tar.gz
Cancel the existing recents animation before any initialization
- In the rare case that we are canceling the recents animation as a part of starting another recents animation, ensure that we do it before we move the target activity to be visible, otherwise the cancelation will undo the previous work. Bug: 193851085 Test: atest RecentsAnimationControllerTest Change-Id: I22589a034eab3b1fab10f4b677f777b282305bbd Merged-In: I22589a034eab3b1fab10f4b677f777b282305bbd (cherry picked from commit 4ebdbc9db168d38341c131f9c53cf799311b6601) (cherry picked from commit 7d6151c61ede945a1b29154fd658a425818db049) Merged-In:I22589a034eab3b1fab10f4b677f777b282305bbd
-rw-r--r--services/core/java/com/android/server/wm/RecentsAnimation.java14
1 files changed, 8 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/wm/RecentsAnimation.java b/services/core/java/com/android/server/wm/RecentsAnimation.java
index b1bdc11ecee4..fea52f2f3b8d 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimation.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimation.java
@@ -164,6 +164,13 @@ class RecentsAnimation implements RecentsAnimationCallbacks, OnRootTaskOrderChan
ProtoLog.d(WM_DEBUG_RECENTS_ANIMATIONS, "startRecentsActivity(): intent=%s", mTargetIntent);
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "RecentsAnimation#startRecentsActivity");
+ // Cancel any existing recents animation running synchronously (do not hold the
+ // WM lock) before starting the newly requested recents animation as they can not coexist
+ if (mWindowManager.getRecentsAnimationController() != null) {
+ mWindowManager.getRecentsAnimationController().forceCancelAnimation(
+ REORDER_MOVE_TO_ORIGINAL_POSITION, "startRecentsActivity");
+ }
+
// If the activity is associated with the root recents task, then try and get that first
Task targetRootTask = mDefaultTaskDisplayArea.getRootTask(WINDOWING_MODE_UNDEFINED,
mTargetActivityType);
@@ -237,12 +244,7 @@ class RecentsAnimation implements RecentsAnimationCallbacks, OnRootTaskOrderChan
targetActivity.intent.replaceExtras(mTargetIntent);
// Fetch all the surface controls and pass them to the client to get the animation
- // started. Cancel any existing recents animation running synchronously (do not hold the
- // WM lock)
- if (mWindowManager.getRecentsAnimationController() != null) {
- mWindowManager.getRecentsAnimationController().forceCancelAnimation(
- REORDER_MOVE_TO_ORIGINAL_POSITION, "startRecentsActivity");
- }
+ // started
mWindowManager.initializeRecentsAnimation(mTargetActivityType, recentsAnimationRunner,
this, mDefaultTaskDisplayArea.getDisplayId(),
mTaskSupervisor.mRecentTasks.getRecentTaskIds(), targetActivity);