Merge "setBoundsChangeTransaction: Fix two issues" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c46f3e0fb5
@@ -846,6 +846,23 @@ class WindowStateAnimator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean shouldConsumeMainWindowSizeTransaction() {
|
||||||
|
// We only consume the transaction when the client is calling relayout
|
||||||
|
// because this is the only time we know the frameNumber will be valid
|
||||||
|
// due to the client renderer being paused. Put otherwise, only when
|
||||||
|
// mInRelayout is true can we guarantee the next frame will contain
|
||||||
|
// the most recent configuration.
|
||||||
|
if (!mWin.mInRelayout) return false;
|
||||||
|
// Since we can only do this for one window, we focus on the main application window
|
||||||
|
if (mAttrType != TYPE_BASE_APPLICATION) return false;
|
||||||
|
final Task task = mWin.getTask();
|
||||||
|
if (task == null) return false;
|
||||||
|
if (task.getMainWindowSizeChangeTransaction() == null) return false;
|
||||||
|
// Likewise we only focus on the task root, since we can only use one window
|
||||||
|
if (!mWin.mActivityRecord.isRootOfTask()) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void setSurfaceBoundariesLocked(final boolean recoveringMemory) {
|
void setSurfaceBoundariesLocked(final boolean recoveringMemory) {
|
||||||
if (mSurfaceController == null) {
|
if (mSurfaceController == null) {
|
||||||
return;
|
return;
|
||||||
@@ -886,8 +903,9 @@ class WindowStateAnimator {
|
|||||||
clipRect = mTmpClipRect;
|
clipRect = mTmpClipRect;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (w.mInRelayout && (mAttrType == TYPE_BASE_APPLICATION) && (task != null)
|
if (shouldConsumeMainWindowSizeTransaction()) {
|
||||||
&& (task.getMainWindowSizeChangeTransaction() != null)) {
|
task.getSurfaceControl().deferTransactionUntil(mWin.getClientViewRootSurface(),
|
||||||
|
mWin.getFrameNumber());
|
||||||
mSurfaceController.deferTransactionUntil(mWin.getClientViewRootSurface(),
|
mSurfaceController.deferTransactionUntil(mWin.getClientViewRootSurface(),
|
||||||
mWin.getFrameNumber());
|
mWin.getFrameNumber());
|
||||||
SurfaceControl.mergeToGlobalTransaction(task.getMainWindowSizeChangeTransaction());
|
SurfaceControl.mergeToGlobalTransaction(task.getMainWindowSizeChangeTransaction());
|
||||||
|
|||||||
Reference in New Issue
Block a user