Merge "WindowManager: Handle main window size change transaction with BLAST." into sc-dev

This commit is contained in:
Rob Carr
2021-04-01 17:54:50 +00:00
committed by Android (Google) Code Review

View File

@@ -538,21 +538,17 @@ class WindowStateAnimator {
// The sync transaction will contain the buffer so the bounds change transaction
// will only be applied with the buffer.
t.merge(task.getMainWindowSizeChangeTransaction());
task.setMainWindowSizeChangeTransaction(null);
} else {
// Use pending transaction here instead of the transaction passed in because we
// want to ensure the defer transaction is applied on the main transaction and
// not on the sync transaction. This is because the sync transaction could
// contain the buffer and we'd defer the transaction that contains the buffer
// we're deferring on.
SurfaceControl.Transaction pendingTransaction = mWin.getPendingTransaction();
pendingTransaction.deferTransactionUntil(
task.getMainWindowSizeChangeTask().getSurfaceControl(),
mWin.getClientViewRootSurface(), mWin.getFrameNumber());
pendingTransaction.deferTransactionUntil(mSurfaceController.mSurfaceControl,
mWin.getClientViewRootSurface(), mWin.getFrameNumber());
pendingTransaction.merge(task.getMainWindowSizeChangeTransaction());
mWin.applyWithNextDraw(finishedFrame -> {
final SurfaceControl.Transaction sizeChangedTransaction =
task.getMainWindowSizeChangeTransaction();
if (sizeChangedTransaction != null) {
finishedFrame.merge(sizeChangedTransaction);
task.setMainWindowSizeChangeTransaction(null);
}
});
}
task.setMainWindowSizeChangeTransaction(null);
}
}