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

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

Change-Id: Ic46a7427b06abd3ec65abf74fd15f46e689603d3
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Riddle Hsu
2022-12-09 14:58:20 +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

@@ -1930,7 +1930,6 @@ class Task extends TaskFragment {
mTaskSupervisor.scheduleUpdateMultiWindowMode(this);
}
final int newWinMode = getWindowingMode();
if (shouldStartChangeTransition(prevWinMode, mTmpPrevBounds)) {
initializeChangeTransition(mTmpPrevBounds);
}
@@ -1944,16 +1943,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

@@ -588,9 +588,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;