From 56647c4c75915f2dde42823dd86d6e23019efa0f Mon Sep 17 00:00:00 2001 From: Riddle Hsu Date: Thu, 8 Dec 2022 00:50:07 +0800 Subject: Keep rotation transform for exiting PiP with fixed rotation The exact fix is the one line change in PipTransition. The example: The landscape PiP activity is expanding to fullscreen portrait. So at the end of animation, the task needs to keep the 90 degree transform. Otherwise it cannot match the area of portrait display. And then display will continue to update to landscape seamlessly and the default finish transaction will reset the rotation transform. The other changes are just small cleanup on the way. Bug: 260925940 Test: Enable shell transition. Use Chrome to play a Youtube video in fullscreen landscape. Enter PiP mode by swiping to home. Press the PiP window to expand to fullscreen landscape. There should be no flickering by inconsistent orientation. Change-Id: I241eb8fc59af4733794a0e0b4d4438e59edbfe10 --- .../Shell/src/com/android/wm/shell/pip/PipTransition.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'libs') diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java index 85bad174194c..e6c7e101d078 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java @@ -358,8 +358,10 @@ public class PipTransition extends PipTransitionController { WindowContainerTransaction wct = null; if (isOutPipDirection(direction)) { // Only need to reset surface properties. The server-side operations were already - // done at the start. - if (tx != null) { + // done at the start. But if it is running fixed rotation, there will be a seamless + // display transition later. So the last rotation transform needs to be kept to + // avoid flickering, and then the display transition will reset the transform. + if (tx != null && !mInFixedRotation) { mFinishTransaction.merge(tx); } } else { -- cgit v1.2.3-59-g8ed1b