Merge "Keep rotation transform for exiting PiP with fixed rotation" into tm-qpr-dev am: 6ecaf45857 am: 57bbf843f0

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20664788

Change-Id: Ie3dbb467ccdbe0af180ff1e09cb81fee756cd115
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Riddle Hsu
2022-12-09 15:26:47 +00:00
committed by Automerger Merge Worker
3 changed files with 7 additions and 9 deletions

View File

@@ -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 {

View File

@@ -1921,7 +1921,6 @@ class Task extends TaskFragment {
mTaskSupervisor.scheduleUpdateMultiWindowMode(this);
}
final int newWinMode = getWindowingMode();
if (shouldStartChangeTransition(prevWinMode, mTmpPrevBounds)) {
initializeChangeTransition(mTmpPrevBounds);
}
@@ -1935,16 +1934,15 @@ class Task extends TaskFragment {
}
}
if (pipChanging && wasInPictureInPicture) {
if (pipChanging && wasInPictureInPicture
&& !mTransitionController.isShellTransitionsEnabled()) {
// If the top activity is changing from PiP to fullscreen with fixed rotation,
// clear the crop and rotation matrix of task because fixed rotation will handle
// the transformation on activity level. This also avoids flickering caused by the
// latency of fullscreen task organizer configuring the surface.
final ActivityRecord r = topRunningActivity();
if (r != null && mDisplayContent.isFixedRotationLaunchingApp(r)) {
getSyncTransaction().setWindowCrop(mSurfaceControl, null)
.setCornerRadius(mSurfaceControl, 0f)
.setMatrix(mSurfaceControl, Matrix.IDENTITY_MATRIX, new float[9]);
resetSurfaceControlTransforms();
}
}

View File

@@ -582,9 +582,7 @@ class WindowToken extends WindowContainer<WindowState> {
.setCallsite("WindowToken.getOrCreateFixedRotationLeash")
.build();
t.setPosition(leash, mLastSurfacePosition.x, mLastSurfacePosition.y);
t.show(leash);
t.reparent(getSurfaceControl(), leash);
t.setAlpha(getSurfaceControl(), 1.f);
mFixedRotationTransformLeash = leash;
updateSurfaceRotation(t, rotation, mFixedRotationTransformLeash);
return mFixedRotationTransformLeash;