Merge "Include all not occluded leaf tasks while wrapping animation target" into tm-dev

This commit is contained in:
Jerry Chang
2022-04-11 05:37:04 +00:00
committed by Android (Google) Code Review
2 changed files with 27 additions and 22 deletions

View File

@@ -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",

View File

@@ -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) {