Reparent task back to the surface control during change transitions

Test: manual - expand a bubble and swipe up to collapse it
             - do this repeatedly and observe the animation doesn't
               flash the task at the top of the screen
Bug: 279074446
Change-Id: I81ece15a1fb21bfb9687540b96cb1baaafb74cb4
This commit is contained in:
Mady Mellor
2023-04-25 16:33:02 -07:00
parent 5bb61ba05d
commit 940e7d9ffe
2 changed files with 17 additions and 0 deletions

View File

@@ -82,6 +82,10 @@ public class TaskViewTaskController implements ShellTaskOrganizer.TaskListener {
mGuard.open("release");
}
SurfaceControl getSurfaceControl() {
return mSurfaceControl;
}
/**
* Sets the provided {@link TaskViewBase}, which is used to notify the client part about the
* task related changes and getting the current bounds.

View File

@@ -336,6 +336,19 @@ public class TaskViewTransitions implements Transitions.TransitionHandler {
tv.prepareOpenAnimation(taskIsNew, startTransaction, finishTransaction,
chg.getTaskInfo(), chg.getLeash(), wct);
changesHandled++;
} else if (chg.getMode() == TRANSIT_CHANGE) {
TaskViewTaskController tv = findTaskView(chg.getTaskInfo());
if (tv == null) {
if (pending != null) {
Slog.w(TAG, "Found a non-TaskView task in a TaskView Transition. This "
+ "shouldn't happen, so there may be a visual artifact: "
+ chg.getTaskInfo().taskId);
}
continue;
}
startTransaction.reparent(chg.getLeash(), tv.getSurfaceControl());
finishTransaction.reparent(chg.getLeash(), tv.getSurfaceControl());
changesHandled++;
}
}
if (stillNeedsMatchingLaunch) {