Fix decor stuck after rotate
If users resize on origin bounds case, we will skip that resized bounds update, but we should still make decor get resized callback to ensure all current status reset. Fix: 281965436 Test: manual Test: pass existing tests Change-Id: I67cac12009bcc5d01b2c2bdee0f48b47e9a7ff22
This commit is contained in:
@@ -2061,18 +2061,16 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
||||
// Reset this flag every time onLayoutSizeChanged.
|
||||
mShowDecorImmediately = false;
|
||||
|
||||
if (!ENABLE_SHELL_TRANSITIONS) {
|
||||
// Only need screenshot for legacy case because shell transition should screenshot
|
||||
// itself during transition.
|
||||
final SurfaceControl.Transaction startT = mTransactionPool.acquire();
|
||||
mMainStage.screenshotIfNeeded(startT);
|
||||
mSideStage.screenshotIfNeeded(startT);
|
||||
mTransactionPool.release(startT);
|
||||
}
|
||||
|
||||
final WindowContainerTransaction wct = new WindowContainerTransaction();
|
||||
boolean sizeChanged = updateWindowBounds(layout, wct);
|
||||
if (!sizeChanged) return;
|
||||
if (!sizeChanged) {
|
||||
// We still need to resize on decor for ensure all current status clear.
|
||||
final SurfaceControl.Transaction t = mTransactionPool.acquire();
|
||||
mMainStage.onResized(t);
|
||||
mSideStage.onResized(t);
|
||||
mTransactionPool.release(t);
|
||||
return;
|
||||
}
|
||||
|
||||
sendOnBoundsChanged();
|
||||
if (ENABLE_SHELL_TRANSITIONS) {
|
||||
@@ -2080,6 +2078,13 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
||||
mSplitTransitions.startResizeTransition(wct, this, (finishWct, t) ->
|
||||
mSplitLayout.setDividerInteractive(true, false, "onSplitResizeFinish"));
|
||||
} else {
|
||||
// Only need screenshot for legacy case because shell transition should screenshot
|
||||
// itself during transition.
|
||||
final SurfaceControl.Transaction startT = mTransactionPool.acquire();
|
||||
mMainStage.screenshotIfNeeded(startT);
|
||||
mSideStage.screenshotIfNeeded(startT);
|
||||
mTransactionPool.release(startT);
|
||||
|
||||
mSyncQueue.queue(wct);
|
||||
mSyncQueue.runInSync(t -> {
|
||||
updateSurfaceBounds(layout, t, false /* applyResizingOffset */);
|
||||
|
||||
Reference in New Issue
Block a user