Merge "Do not sync transient hide activities" into udc-dev

This commit is contained in:
Riddle Hsu
2023-04-09 04:16:31 +00:00
committed by Android (Google) Code Review
3 changed files with 5 additions and 10 deletions

View File

@@ -10535,11 +10535,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
@Override
boolean isSyncFinished() {
if (task != null && mTransitionController.isTransientHide(task)) {
// The activity keeps visibleRequested but may be hidden later, so no need to wait for
// it to be drawn.
return true;
}
if (!super.isSyncFinished()) return false;
if (mDisplayContent != null && mDisplayContent.mUnknownAppVisibilityController
.isVisibilityUnknown(this)) {

View File

@@ -511,8 +511,10 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
if (mParticipants.contains(wc)) return;
// Wallpaper is like in a static drawn state unless display may have changes, so exclude
// the case to reduce transition latency waiting for the unchanged wallpaper to redraw.
final boolean needSyncDraw = !isWallpaper(wc) || mParticipants.contains(wc.mDisplayContent);
if (needSyncDraw) {
final boolean needSync = (!isWallpaper(wc) || mParticipants.contains(wc.mDisplayContent))
// Transient-hide may be hidden later, so no need to request redraw.
&& !isInTransientHide(wc);
if (needSync) {
mSyncEngine.addToSyncSet(mSyncId, wc);
}
ChangeInfo info = mChanges.get(wc);

View File

@@ -1404,8 +1404,6 @@ public class TransitionTests extends WindowTestsBase {
// We are now going to simulate closing task1 to return back to (open) task2.
final Transition closeTransition = controller.createTransition(TRANSIT_CLOSE);
closeTransition.collectExistenceChange(task1);
closeTransition.collectExistenceChange(activity1);
closeTransition.collectExistenceChange(task2);
closeTransition.collectExistenceChange(activity2);
closeTransition.setTransientLaunch(activity2, task1);
@@ -1416,7 +1414,7 @@ public class TransitionTests extends WindowTestsBase {
assertNotNull(activity1ChangeInfo);
assertTrue(activity1ChangeInfo.hasChanged());
// No need to wait for the activity in transient hide task.
assertTrue(activity1.isSyncFinished());
assertEquals(WindowContainer.SYNC_STATE_NONE, activity1.mSyncState);
activity1.setVisibleRequested(false);
activity2.setVisibleRequested(true);