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:
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user