summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jerry Chang <chenghsiuchang@google.com> 2022-04-11 05:37:04 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-04-11 05:37:04 +0000
commitefb263d1a4d2787c6cac6c1794e4e7e3aef6da39 (patch)
treee1f62c4dc81234295a2c441f36504a6188945bc2
parentfd01ec1577de932217f789c9119a448460221fff (diff)
parentb9438a8dce895c69c70acd5db88e307ac781a6e7 (diff)
Merge "Include all not occluded leaf tasks while wrapping animation target" into tm-dev
-rw-r--r--data/etc/services.core.protolog.json12
-rw-r--r--services/core/java/com/android/server/wm/RecentsAnimationController.java37
2 files changed, 27 insertions, 22 deletions
diff --git a/data/etc/services.core.protolog.json b/data/etc/services.core.protolog.json
index eb16394e4edb..c21aa2dd7353 100644
--- a/data/etc/services.core.protolog.json
+++ b/data/etc/services.core.protolog.json
@@ -1951,12 +1951,6 @@
"group": "WM_DEBUG_ORIENTATION",
"at": "com\/android\/server\/wm\/ScreenRotationAnimation.java"
},
- "-172900257": {
- "message": "addTaskToTargets, target: %s",
- "level": "DEBUG",
- "group": "WM_DEBUG_RECENTS_ANIMATIONS",
- "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
- },
"-172326720": {
"message": "Saving icicle of %s: %s",
"level": "INFO",
@@ -3319,6 +3313,12 @@
"group": "WM_DEBUG_WINDOW_ORGANIZER",
"at": "com\/android\/server\/wm\/DisplayAreaOrganizerController.java"
},
+ "1151072840": {
+ "message": "collectTaskRemoteAnimations, target: %s",
+ "level": "DEBUG",
+ "group": "WM_DEBUG_RECENTS_ANIMATIONS",
+ "at": "com\/android\/server\/wm\/RecentsAnimationController.java"
+ },
"1164325516": {
"message": "onExitAnimationDone in %s: exiting=%b remove=%b selfAnimating=%b anim=%s",
"level": "VERBOSE",
diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java
index 0495302533a5..fc407e616bd9 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimationController.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java
@@ -707,13 +707,7 @@ public class RecentsAnimationController implements DeathRecipient {
if (isAnimatingTask(task) || skipAnimation(task)) {
return;
}
- final RemoteAnimationTarget target = createTaskRemoteAnimation(task, MODE_OPENING,
- finishedCallback);
- if (target == null) {
- return;
- }
- ProtoLog.d(WM_DEBUG_RECENTS_ANIMATIONS, "addTaskToTargets, target: %s", target);
- mPendingTaskAppears.add(target);
+ collectTaskRemoteAnimations(task, MODE_OPENING, finishedCallback);
}
}
@@ -729,19 +723,30 @@ public class RecentsAnimationController implements DeathRecipient {
}
}
- private RemoteAnimationTarget createTaskRemoteAnimation(Task task, int mode,
+ private void collectTaskRemoteAnimations(Task task, int mode,
OnAnimationFinishedCallback finishedCallback) {
final SparseBooleanArray recentTaskIds =
mService.mAtmService.getRecentTasks().getRecentTaskIds();
+
// The target must be built off the root task (the leaf task surface would be cropped
- // within the root surface). However, recents only tracks leaf task ids, so we'll replace
- // the task-id with the leaf id.
- final Task leafTask = task.getTopLeafTask();
- int taskId = leafTask.mTaskId;
- TaskAnimationAdapter adapter = addAnimation(task,
- !recentTaskIds.get(taskId), true /* hidden */, finishedCallback);
- mPendingNewTaskTargets.add(taskId);
- return adapter.createRemoteAnimationTarget(taskId, mode);
+ // within the root surface). However, recents only tracks leaf task ids, so we'll traverse
+ // and create animation target for all visible leaf tasks.
+ task.forAllLeafTasks(leafTask -> {
+ if (!leafTask.shouldBeVisible(null /* starting */)) {
+ return;
+ }
+ final int taskId = leafTask.mTaskId;
+ TaskAnimationAdapter adapter = addAnimation(leafTask,
+ !recentTaskIds.get(taskId), true /* hidden */, finishedCallback);
+ mPendingNewTaskTargets.add(taskId);
+ final RemoteAnimationTarget target =
+ adapter.createRemoteAnimationTarget(taskId, mode);
+ if (target != null) {
+ mPendingTaskAppears.add(target);
+ ProtoLog.d(WM_DEBUG_RECENTS_ANIMATIONS,
+ "collectTaskRemoteAnimations, target: %s", target);
+ }
+ }, true);
}
void logRecentsAnimationStartTime(int durationMs) {