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

Commit 2bff4a96 authored by Evan Rosky's avatar Evan Rosky
Browse files

Don't prematurely apply finishT in taskview handler

The finish-transaction is supposed to be applied by the
transition player since the order matters. By applying it
in TaskViewTransitions, it was causing operations to run
out-of-order leaving broken surface hierarchies. This
removes the erroneous apply() calls.

Also, set surface position to 0,0 on surfaceChanged to
match surfaceCreated -- otherwise we end up with a double
offset.

Bug: 277759491
Test: open new homecontrols from dream (observe no offset),
      then close them via the X button (should return to dream).
Change-Id: I4527df33b29ad93045928d8e73b0698a36d95081
parent 05a834b1
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -453,7 +453,7 @@ public class TaskViewTaskController implements ShellTaskOrganizer.TaskListener {
            return;
        }

        finishTransaction.reparent(mTaskLeash, null).apply();
        finishTransaction.reparent(mTaskLeash, null);

        if (mListener != null) {
            final int taskId = mTaskInfo.taskId;
@@ -490,13 +490,11 @@ public class TaskViewTaskController implements ShellTaskOrganizer.TaskListener {
        if (mSurfaceCreated) {
            // Surface is ready, so just reparent the task to this surface control
            startTransaction.reparent(mTaskLeash, mSurfaceControl)
                    .show(mTaskLeash)
                    .apply();
                    .show(mTaskLeash);
            // Also reparent on finishTransaction since the finishTransaction will reparent back
            // to its "original" parent by default.
            finishTransaction.reparent(mTaskLeash, mSurfaceControl)
                    .setPosition(mTaskLeash, 0, 0)
                    .apply();
                    .setPosition(mTaskLeash, 0, 0);
            mTaskViewTransitions.updateBoundsState(this, mTaskViewBase.getCurrentBoundsOnScreen());
            mTaskViewTransitions.updateVisibilityState(this, true /* visible */);
            wct.setBounds(mTaskToken, mTaskViewBase.getCurrentBoundsOnScreen());
+2 −2
Original line number Diff line number Diff line
@@ -363,7 +363,8 @@ public class TaskViewTransitions implements Transitions.TransitionHandler {
                    continue;
                }
                startTransaction.reparent(chg.getLeash(), tv.getSurfaceControl());
                finishTransaction.reparent(chg.getLeash(), tv.getSurfaceControl());
                finishTransaction.reparent(chg.getLeash(), tv.getSurfaceControl())
                    .setPosition(chg.getLeash(), 0, 0);
                changesHandled++;
            }
        }
@@ -377,7 +378,6 @@ public class TaskViewTransitions implements Transitions.TransitionHandler {
        }
        // No animation, just show it immediately.
        startTransaction.apply();
        finishTransaction.apply();
        finishCallback.onTransitionFinished(wct, null /* wctCB */);
        startNextTransition();
        return true;