diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index b55e653eb1394..6d2b2d3c7bd4c 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -4213,6 +4213,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A void clearAllDrawn() { allDrawn = false; + mLastAllDrawn = false; } /** diff --git a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java index d67a0d3716755..50749a961b270 100644 --- a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java +++ b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java @@ -253,7 +253,16 @@ class ScreenRotationAnimation { ProtoLog.i(WM_SHOW_SURFACE_ALLOC, " FREEZE %s: CREATE", mScreenshotLayer); - setRotation(t, realOriginalRotation); + if (originalRotation == realOriginalRotation) { + setRotation(t, realOriginalRotation); + } else { + // If the given original rotation is different from real original display rotation, + // this is playing non-zero degree rotation animation without display rotation change, + // so the snapshot doesn't need to be transformed. + mCurRotation = realOriginalRotation; + mSnapshotInitialMatrix.reset(); + setRotationTransform(t, mSnapshotInitialMatrix); + } t.apply(); }