diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java index f51fd8aaf7eb5..aaa7a57964adc 100644 --- a/services/core/java/com/android/server/wm/TaskStack.java +++ b/services/core/java/com/android/server/wm/TaskStack.java @@ -17,6 +17,7 @@ package com.android.server.wm; import static android.app.ActivityManager.DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT; +import static android.app.ActivityManager.DOCKED_STACK_CREATE_MODE_BOTTOM_OR_RIGHT; import static android.app.ActivityManager.StackId.DOCKED_STACK_ID; import static android.app.ActivityManager.StackId.HOME_STACK_ID; import static android.app.ActivityManager.StackId.PINNED_STACK_ID; @@ -403,6 +404,13 @@ public class TaskStack implements DimLayer.DimLayerUser, snapDockedStackAfterRotation(mTmpRect2); final int newDockSide = getDockSide(mTmpRect2); if (oldDockSide != newDockSide) { + // Update the dock create mode and clear the dock create bounds, these + // might change after a rotation and the original values will be invalid. + mService.setDockedStackCreateStateLocked( + (newDockSide == DOCKED_LEFT || newDockSide == DOCKED_TOP) + ? DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT + : DOCKED_STACK_CREATE_MODE_BOTTOM_OR_RIGHT, + null); mDisplayContent.getDockedDividerController().notifyDockSideChanged(newDockSide); } } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index d496510c23aae..c7148c1ef340c 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -4959,11 +4959,15 @@ public class WindowManagerService extends IWindowManager.Stub public void setDockedStackCreateState(int mode, Rect bounds) { synchronized (mWindowMap) { - mDockedStackCreateMode = mode; - mDockedStackCreateBounds = bounds; + setDockedStackCreateStateLocked(mode, bounds); } } + void setDockedStackCreateStateLocked(int mode, Rect bounds) { + mDockedStackCreateMode = mode; + mDockedStackCreateBounds = bounds; + } + /** * Create a new TaskStack and place it on a DisplayContent. * @param stackId The unique identifier of the new stack.