Crop windowing layer to that of display size in screen rotation animation

* Wallpaper is larger than display bounds,
so rotating launcher or other apps that are not
opaque will show the wallpaper in background

Bug: 222632469
Change-Id: I1b23e1da0d8acffdbe7245030095a029e314af0f
This commit is contained in:
Vinit Nayak
2022-07-13 17:56:05 -07:00
parent aa96d79cbe
commit 2ebf2466d7

View File

@@ -600,7 +600,7 @@ class ScreenRotationAnimation {
}
private SurfaceAnimator startDisplayRotation() {
return startAnimation(initializeBuilder()
SurfaceAnimator animator = startAnimation(initializeBuilder()
.setAnimationLeashParent(mDisplayContent.getSurfaceControl())
.setSurfaceControl(mDisplayContent.getWindowingLayer())
.setParentSurfaceControl(mDisplayContent.getSurfaceControl())
@@ -609,6 +609,13 @@ class ScreenRotationAnimation {
.build(),
createWindowAnimationSpec(mRotateEnterAnimation),
this::onAnimationEnd);
// Crop the animation leash to avoid extended wallpaper from showing over
// mBackColorSurface
Rect displayBounds = mDisplayContent.getBounds();
mDisplayContent.getPendingTransaction()
.setWindowCrop(animator.mLeash, displayBounds.width(), displayBounds.height());
return animator;
}
private SurfaceAnimator startScreenshotAlphaAnimation() {