summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Tony Huang <tonyychuang@google.com> 2023-05-17 08:54:01 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2023-05-17 08:54:01 +0000
commitf2bb0451013df397c75603ce7ea5badfd948b587 (patch)
tree7f079b87ef75d92555a54df36f2efa3f5154a499
parente37be4c10f250faa3cf746997816147957f90849 (diff)
parentb05472ccfdcf693e4bab848c3b63f4784d084582 (diff)
Merge "Fix decor stuck after rotate" into udc-dev am: 8b77e6b061 am: b05472ccfd
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23232984 Change-Id: I86e9aca5e1e3148498530d7e16e27e3f7b3290be Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java25
1 files changed, 15 insertions, 10 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
index a95d038f9ead..bf20567834e0 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
@@ -2035,18 +2035,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) {
@@ -2054,6 +2052,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 */);