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

Commit 997f653a authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Only set SYNC flag if >1 track" into udc-qpr-dev

parents 1fe1ab63 7b3c8dde
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -1124,14 +1124,15 @@ class TransitionController {
                        + "track #%d", transition.getSyncId(), track);
            }
        }
        if (sync) {
        transition.mAnimationTrack = track;
        info.setTrack(track);
        mTrackCount = Math.max(mTrackCount, track + 1);
        if (sync && mTrackCount > 1) {
            // If there are >1 tracks, mark as sync so that all tracks finish.
            info.setFlags(info.getFlags() | TransitionInfo.FLAG_SYNC);
            ProtoLog.v(ProtoLogGroup.WM_DEBUG_WINDOW_TRANSITIONS, "Marking #%d animation as SYNC.",
                    transition.getSyncId());
        }
        transition.mAnimationTrack = track;
        info.setTrack(track);
        mTrackCount = Math.max(mTrackCount, track + 1);
    }

    void updateAnimatingState(SurfaceControl.Transaction t) {
+32 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import static android.window.TransitionInfo.FLAG_IS_BEHIND_STARTING_WINDOW;
import static android.window.TransitionInfo.FLAG_IS_WALLPAPER;
import static android.window.TransitionInfo.FLAG_MOVED_TO_TOP;
import static android.window.TransitionInfo.FLAG_SHOW_WALLPAPER;
import static android.window.TransitionInfo.FLAG_SYNC;
import static android.window.TransitionInfo.FLAG_TRANSLUCENT;
import static android.window.TransitionInfo.isIndependent;

@@ -2384,6 +2385,37 @@ public class TransitionTests extends WindowTestsBase {
        assertFalse(controller.isCollecting());
    }

    @Test
    public void testNoSyncFlagIfOneTrack() {
        final TransitionController controller = mAtm.getTransitionController();
        final TestTransitionPlayer player = registerTestTransitionPlayer();

        mSyncEngine = createTestBLASTSyncEngine();
        controller.setSyncEngine(mSyncEngine);

        final Transition transitA = createTestTransition(TRANSIT_OPEN, controller);
        final Transition transitB = createTestTransition(TRANSIT_OPEN, controller);
        final Transition transitC = createTestTransition(TRANSIT_OPEN, controller);

        controller.startCollectOrQueue(transitA, (deferred) -> {});
        controller.startCollectOrQueue(transitB, (deferred) -> {});
        controller.startCollectOrQueue(transitC, (deferred) -> {});

        // Verify that, as-long as there is <= 1 track, we won't get a SYNC flag
        transitA.start();
        transitA.setAllReady();
        mSyncEngine.tryFinishForTest(transitA.getSyncId());
        assertTrue((player.mLastReady.getFlags() & FLAG_SYNC) == 0);
        transitB.start();
        transitB.setAllReady();
        mSyncEngine.tryFinishForTest(transitB.getSyncId());
        assertTrue((player.mLastReady.getFlags() & FLAG_SYNC) == 0);
        transitC.start();
        transitC.setAllReady();
        mSyncEngine.tryFinishForTest(transitC.getSyncId());
        assertTrue((player.mLastReady.getFlags() & FLAG_SYNC) == 0);
    }

    private static void makeTaskOrganized(Task... tasks) {
        final ITaskOrganizer organizer = mock(ITaskOrganizer.class);
        for (Task t : tasks) {