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

Commit d488ff69 authored by Riddle Hsu's avatar Riddle Hsu Committed by Android (Google) Code Review
Browse files

Merge "Avoid getting crashed by slow transition"

parents 9222c803 46ecdc5c
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -605,11 +605,16 @@ public class ActivityStartController {
        final Task task = r.getTask();
        mService.deferWindowLayout();
        try {
            r.mTransitionController.requestStartTransition(transition,
                    task, remoteTransition, null /* displayChange */);
            r.mTransitionController.collect(task);
            r.mTransitionController.setTransientLaunch(r,
                    TaskDisplayArea.getRootTaskAbove(rootTask));
            final TransitionController controller = r.mTransitionController;
            if (controller.getTransitionPlayer() != null) {
                controller.requestStartTransition(transition, task, remoteTransition,
                        null /* displayChange */);
                controller.collect(task);
                controller.setTransientLaunch(r, TaskDisplayArea.getRootTaskAbove(rootTask));
            } else {
                // The transition player might be died when executing the queued transition.
                transition.abort();
            }
            task.moveToFront("startExistingRecents");
            task.mInResumeTopActivity = true;
            task.resumeTopActivity(null /* prev */, options, true /* deferPause */);
+2 −1
Original line number Diff line number Diff line
@@ -635,7 +635,8 @@ public class DisplayRotation {

        if (mDisplayContent.mTransitionController.isShellTransitionsEnabled()) {
            if (!mDisplayContent.mTransitionController.isCollecting()) {
                throw new IllegalStateException("Trying to rotate outside a transition");
                // The remote may be too slow to response before transition timeout.
                Slog.e(TAG, "Trying to continue rotation outside a transition");
            }
            mDisplayContent.mTransitionController.collect(mDisplayContent);
        }
+4 −1
Original line number Diff line number Diff line
@@ -427,7 +427,10 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
        if (mState < STATE_COLLECTING) {
            throw new IllegalStateException("Can't start Transition which isn't collecting.");
        } else if (mState >= STATE_STARTED) {
            Slog.w(TAG, "Transition already started: " + mSyncId);
            Slog.w(TAG, "Transition already started id=" + mSyncId + " state=" + mState);
            // The transition may be aborted (STATE_ABORT) or timed out (STATE_PLAYING by
            // SyncGroup#finishNow), so do not revert the state to STATE_STARTED.
            return;
        }
        mState = STATE_STARTED;
        ProtoLog.v(ProtoLogGroup.WM_DEBUG_WINDOW_TRANSITIONS, "Starting Transition %d",