Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 616c7c10 authored by Chong Zhang's avatar Chong Zhang
Browse files

Fix wallpaper crop during unlock animation

Do not crop wallpaper if the wallpaper target is animating but stack
clip mode is not STACK_CLIP_AFTER_ANIM. We can't crop wallpaper with
final bounds as the crop needs to apply before the transform.

bug: 28887408
Change-Id: I62b9a5ca818c3ca8d0af26d807318f63747b8ac4
parent 0a9ccf26
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -1334,7 +1334,17 @@ class WindowStateAnimator {
            final WindowState wallpaperTarget = mWallpaperControllerLocked.getWallpaperTarget();
            if (wallpaperTarget != null) {
                final Task task = wallpaperTarget.getTask();
                if (task != null && !task.isFullscreen()) {
                final WindowStateAnimator winAnimator = wallpaperTarget.mWinAnimator;
                // We can only crop the wallpaper using final crop with stack bounds if the target
                // is not animating, or if it's animating with clip mode STACK_CLIP_AFTER_ANIM.
                // If it's animating with mode STACK_CLIP_NONE, we shouldn't crop either the task
                // itself or the wallpaper. If it's animating with STACK_CLIP_BEFORE_ANIM, the crop
                // is before the transform on the task itself.
                final boolean useFinalCropOnWallpaper = !winAnimator.isAnimationSet()
                        || winAnimator.resolveStackClip() == STACK_CLIP_AFTER_ANIM;
                if (task != null && !task.isFullscreen()
                        && task.cropWindowsToStackBounds()
                        && useFinalCropOnWallpaper){
                    final TaskStack stack = task.mStack;
                    if (stack != null && !stack.isFullscreen()) {
                        stack.getDimBounds(mTmpStackBounds);