diff options
| author | 2022-04-11 05:37:04 +0000 | |
|---|---|---|
| committer | 2022-04-11 05:37:04 +0000 | |
| commit | efb263d1a4d2787c6cac6c1794e4e7e3aef6da39 (patch) | |
| tree | e1f62c4dc81234295a2c441f36504a6188945bc2 | |
| parent | fd01ec1577de932217f789c9119a448460221fff (diff) | |
| parent | b9438a8dce895c69c70acd5db88e307ac781a6e7 (diff) | |
Merge "Include all not occluded leaf tasks while wrapping animation target" into tm-dev
| -rw-r--r-- | data/etc/services.core.protolog.json | 12 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/RecentsAnimationController.java | 37 |
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) { |