diff --git a/core/proto/android/server/windowmanagerservice.proto b/core/proto/android/server/windowmanagerservice.proto index a8d0825b673f8..ee371c17bb788 100644 --- a/core/proto/android/server/windowmanagerservice.proto +++ b/core/proto/android/server/windowmanagerservice.proto @@ -220,6 +220,7 @@ message StackProto { optional float adjust_ime_amount = 10; optional float adjust_divider_amount = 11; optional .android.graphics.RectProto adjusted_bounds = 12; + optional bool animating_bounds = 13; } /* represents Task */ diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java index 9a4db655a0faf..5676f588fa249 100644 --- a/services/core/java/com/android/server/wm/AppWindowToken.java +++ b/services/core/java/com/android/server/wm/AppWindowToken.java @@ -1312,7 +1312,8 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree if (prevWinMode != WINDOWING_MODE_UNDEFINED && winMode == WINDOWING_MODE_PINNED) { // Entering PiP from fullscreen, reset the snap fraction mDisplayContent.mPinnedStackControllerLocked.resetReentrySnapFraction(this); - } else if (prevWinMode == WINDOWING_MODE_PINNED && winMode != WINDOWING_MODE_UNDEFINED) { + } else if (prevWinMode == WINDOWING_MODE_PINNED && winMode != WINDOWING_MODE_UNDEFINED + && !isHidden()) { // Leaving PiP to fullscreen, save the snap fraction based on the pre-animation bounds // for the next re-entry into PiP (assuming the activity is not hidden or destroyed) final TaskStack pinnedStack = mDisplayContent.getPinnedStack(); diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java index 2175c6be5b5f7..b6ee713fdf05a 100644 --- a/services/core/java/com/android/server/wm/TaskStack.java +++ b/services/core/java/com/android/server/wm/TaskStack.java @@ -37,6 +37,7 @@ import static com.android.server.wm.StackProto.ADJUSTED_BOUNDS; import static com.android.server.wm.StackProto.ADJUSTED_FOR_IME; import static com.android.server.wm.StackProto.ADJUST_DIVIDER_AMOUNT; import static com.android.server.wm.StackProto.ADJUST_IME_AMOUNT; +import static com.android.server.wm.StackProto.ANIMATING_BOUNDS; import static com.android.server.wm.StackProto.ANIMATION_BACKGROUND_SURFACE_IS_DIMMING; import static com.android.server.wm.StackProto.BOUNDS; import static com.android.server.wm.StackProto.DEFER_REMOVAL; @@ -1363,6 +1364,7 @@ public class TaskStack extends WindowContainer implements proto.write(ADJUST_IME_AMOUNT, mAdjustImeAmount); proto.write(ADJUST_DIVIDER_AMOUNT, mAdjustDividerAmount); mAdjustedBounds.writeToProto(proto, ADJUSTED_BOUNDS); + proto.write(ANIMATING_BOUNDS, mBoundsAnimating); proto.end(token); }