summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/WindowStateAnimator.java18
1 files changed, 13 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index b25383b15421..d4470f8334ea 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -1066,14 +1066,15 @@ class WindowStateAnimator {
if (!w.mSeamlesslyRotated) {
+ // Wallpaper is already updated above when calling setWallpaperPositionAndScale so
+ // we only need to consider the non-wallpaper case here.
if (!mIsWallpaper) {
applyCrop(clipRect, recoveringMemory);
- mSurfaceController.setMatrixInTransaction(mDsDx * w.mHScale * mExtraHScale,
+ mSurfaceController.setMatrixInTransaction(
+ mDsDx * w.mHScale * mExtraHScale,
mDtDx * w.mVScale * mExtraVScale,
mDtDy * w.mHScale * mExtraHScale,
mDsDy * w.mVScale * mExtraVScale, recoveringMemory);
- } else {
- setWallpaperPositionAndScale(mXOffset, mYOffset, mWallpaperScale, recoveringMemory);
}
}
@@ -1152,13 +1153,20 @@ class WindowStateAnimator {
mSurfaceController, mShownAlpha, mDsDx, w.mHScale, mDtDx, w.mVScale,
mDtDy, w.mHScale, mDsDy, w.mVScale, w);
- boolean prepared =
- mSurfaceController.prepareToShowInTransaction(mShownAlpha,
+ boolean prepared = true;
+
+ if (mIsWallpaper) {
+ setWallpaperPositionAndScale(
+ mXOffset, mYOffset, mWallpaperScale, recoveringMemory);
+ } else {
+ prepared =
+ mSurfaceController.prepareToShowInTransaction(mShownAlpha,
mDsDx * w.mHScale * mExtraHScale,
mDtDx * w.mVScale * mExtraVScale,
mDtDy * w.mHScale * mExtraHScale,
mDsDy * w.mVScale * mExtraVScale,
recoveringMemory);
+ }
if (prepared && mDrawState == HAS_DRAWN) {
if (mLastHidden) {