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

Commit 1e76eb50 authored by Evan Rosky's avatar Evan Rosky
Browse files

Fix some places where we could abort an already-requested transition

This can leave the player in a confused state since the contract
is that, once we send a request, then we will send a corresponding
ready.

Bug: 270228517
Test: Just moved code around a little, so existing tests should pass.
Change-Id: I6871befadc2603029af6402f4cb4d4b2ac55f8b8
parent 80420d7e
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -778,13 +778,12 @@ class ActivityClientController extends IActivityClientController.Stub {
                        && r.mTransitionController.inPlayingTransition(r)
                        && !r.mTransitionController.isCollecting()
                        ? r.mTransitionController.createTransition(TRANSIT_TO_BACK) : null;
                if (transition != null) {
                    r.mTransitionController.requestStartTransition(transition, null /*startTask */,
                            null /* remoteTransition */, null /* displayChange */);
                }
                final boolean changed = r != null && r.setOccludesParent(true);
                if (transition != null) {
                    if (changed) {
                        r.mTransitionController.requestStartTransition(transition,
                                null /*startTask */, null /* remoteTransition */,
                                null /* displayChange */);
                        r.mTransitionController.setReady(r.getDisplayContent());
                    } else {
                        transition.abort();
@@ -818,13 +817,12 @@ class ActivityClientController extends IActivityClientController.Stub {
                final Transition transition = r.mTransitionController.inPlayingTransition(r)
                        && !r.mTransitionController.isCollecting()
                        ? r.mTransitionController.createTransition(TRANSIT_TO_FRONT) : null;
                if (transition != null) {
                    r.mTransitionController.requestStartTransition(transition, null /*startTask */,
                            null /* remoteTransition */, null /* displayChange */);
                }
                final boolean changed = r.setOccludesParent(false);
                if (transition != null) {
                    if (changed) {
                        r.mTransitionController.requestStartTransition(transition,
                                null /*startTask */, null /* remoteTransition */,
                                null /* displayChange */);
                        r.mTransitionController.setReady(r.getDisplayContent());
                    } else {
                        transition.abort();
+2 −2
Original line number Diff line number Diff line
@@ -5636,8 +5636,6 @@ class Task extends TaskFragment {
                mWmService.mSyncEngine.queueSyncSet(
                        () -> mTransitionController.moveToCollecting(transition),
                        () -> {
                            mTransitionController.requestStartTransition(transition, tr,
                                    null /* remoteTransition */, null /* displayChange */);
                            // Need to check again since this happens later and the system might
                            // be in a different state.
                            if (!canMoveTaskToBack(tr)) {
@@ -5646,6 +5644,8 @@ class Task extends TaskFragment {
                                transition.abort();
                                return;
                            }
                            mTransitionController.requestStartTransition(transition, tr,
                                    null /* remoteTransition */, null /* displayChange */);
                            moveTaskToBackInner(tr);
                        });
            } else {
+0 −7
Original line number Diff line number Diff line
@@ -88,7 +88,6 @@ import static android.view.WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
import static android.view.WindowManager.REMOVE_CONTENT_MODE_UNDEFINED;
import static android.view.WindowManager.TRANSIT_NONE;
import static android.view.WindowManager.TRANSIT_TO_FRONT;
import static android.view.WindowManager.fixScale;
import static android.view.WindowManagerGlobal.ADD_OKAY;
import static android.view.WindowManagerGlobal.RELAYOUT_RES_CANCEL_AND_REDRAW;
@@ -8537,13 +8536,7 @@ public class WindowManagerService extends IWindowManager.Stub
            }
        }

        // focus-transfer can re-order windows and thus potentially causes visible changes:
        final Transition transition = mAtmService.getTransitionController()
                .requestTransitionIfNeeded(TRANSIT_TO_FRONT, task);
        mAtmService.setFocusedTask(task.mTaskId, touchedActivity);
        if (transition != null) {
            transition.setReady(task, true /* ready */);
        }
    }

    /**