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

Commit d0b37f91 authored by Ikram Gabiyev's avatar Ikram Gabiyev Committed by Android (Google) Code Review
Browse files

Merge "Only mark queued transition as no-op if Shell-init" into main

parents da01b8d3 8185cfae
Loading
Loading
Loading
Loading
+20 −8
Original line number Original line Diff line number Diff line
@@ -1571,13 +1571,14 @@ class TransitionController {
        proto.end(token);
        proto.end(token);
    }
    }


    /** Returns {@code true} if it started collecting, {@code false} if it was queued. */
    private void queueTransition(Transition transit, OnStartCollect onStartCollect,
    private void queueTransition(Transition transit, OnStartCollect onStartCollect) {
            boolean noopIfDuringDisplayChange) {
        final QueuedTransition queuedTransition = new QueuedTransition(transit, onStartCollect);
        final QueuedTransition queuedTransition = new QueuedTransition(transit, onStartCollect);


        // If we queue a non-display transition while a collecting transition is still not
        // If we queue a non-display transition while a collecting transition
        // formally started, then check if collecting transition is changing a display
        // is still not formally started, then check if collecting transition is changing a display.
        if ((transit.getFlags() & TRANSIT_FLAG_DISPLAY_LEVEL_TRANSITION) == 0
        if (noopIfDuringDisplayChange
                && (transit.getFlags() & TRANSIT_FLAG_DISPLAY_LEVEL_TRANSITION) == 0
                && mCollectingTransition != null && !mCollectingTransition.hasStarted()) {
                && mCollectingTransition != null && !mCollectingTransition.hasStarted()) {
            for (int i = 0; i < mCollectingTransition.mParticipants.size(); i++) {
            for (int i = 0; i < mCollectingTransition.mParticipants.size(); i++) {
                if (mCollectingTransition.mParticipants.valueAt(i).asDisplayContent() != null) {
                if (mCollectingTransition.mParticipants.valueAt(i).asDisplayContent() != null) {
@@ -1592,11 +1593,22 @@ class TransitionController {
                "Queueing transition: %s", transit);
                "Queueing transition: %s", transit);
    }
    }


    /** Returns {@code true} if it started collecting, {@code false} if it was queued. */
    /** @see #startCollectOrQueue(Transition, OnStartCollect, boolean) */
    boolean startCollectOrQueue(Transition transit, OnStartCollect onStartCollect) {
    boolean startCollectOrQueue(Transition transit, OnStartCollect onStartCollect) {
        return startCollectOrQueue(transit, onStartCollect, false /* isDirectFromShell */);
    }

    /**
     * Returns {@code true} if it started collecting, {@code false} if it was queued.
     *
     * @param noopIfDuringDisplayChange true we should no-op this transition when a display
     *                                  changing transition is collecting but not formally started.
     */
    boolean startCollectOrQueue(Transition transit, OnStartCollect onStartCollect,
            boolean noopIfDuringDisplayChange) {
        if (!mQueuedTransitions.isEmpty()) {
        if (!mQueuedTransitions.isEmpty()) {
            // Just add to queue since we already have a queue.
            // Just add to queue since we already have a queue.
            queueTransition(transit, onStartCollect);
            queueTransition(transit, onStartCollect, noopIfDuringDisplayChange);
            return false;
            return false;
        }
        }
        if (mSyncEngine.hasActiveSync()) {
        if (mSyncEngine.hasActiveSync()) {
@@ -1615,7 +1627,7 @@ class TransitionController {
            } else {
            } else {
                Slog.w(TAG, "Ongoing Sync outside of transition.");
                Slog.w(TAG, "Ongoing Sync outside of transition.");
            }
            }
            queueTransition(transit, onStartCollect);
            queueTransition(transit, onStartCollect, noopIfDuringDisplayChange);
            return false;
            return false;
        }
        }
        moveToCollecting(transit);
        moveToCollecting(transit);
+1 −1
Original line number Original line Diff line number Diff line
@@ -380,7 +380,7 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
                                    setAllReadyIfNeeded(nextTransition, wct);
                                    setAllReadyIfNeeded(nextTransition, wct);
                                }
                                }
                                mService.mChainTracker.end();
                                mService.mChainTracker.end();
                            });
                            }, true /* noopIfDuringDisplayChange */);
                    return nextTransition.getToken();
                    return nextTransition.getToken();
                }
                }
                // The transition already started collecting before sending a request to shell,
                // The transition already started collecting before sending a request to shell,