Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 940e7d9f authored by Mady Mellor's avatar Mady Mellor
Browse files

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
parent 5bb61ba0
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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.
+13 −0
Original line number Diff line number Diff line
@@ -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) {