Merge "Only set SYNC flag if >1 track" into udc-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
997f653a94
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user