Take new screen shot before kill previous one.

This issue happened while continues start rotation animation twice.
For the second time startFreezingDisplay, if previous
ScreenRotationAnimation object is animating, in original flow we would
kill previous animation object which would remove the surfaces with a
transaction, then take a new screen shot and apply those new surfaces
with another transaction.
Because the second screen shot is taken after previous animation's
surfaces just been removed, so it may not fluent with original
frame.
To make the animation smooth, take the screen shot before kill
previous screen rotation animation.

Bug: 148192402
Test: Change display or font size in Settings quickly and monitoring
no flicker occurred.

Change-Id: Ie351a68e8b813e888756f9578da3a00c5c1c017f
This commit is contained in:
wilsonshih
2020-05-29 15:49:05 +08:00
committed by Wei Sheng Shih
parent 38e3d616bc
commit 42e9e4890b

View File

@@ -5616,11 +5616,6 @@ public class WindowManagerService extends IWindowManager.Stub
mLatencyTracker.onActionStart(ACTION_ROTATE_SCREEN);
mExitAnimId = exitAnim;
mEnterAnimId = enterAnim;
ScreenRotationAnimation screenRotationAnimation =
displayContent.getRotationAnimation();
if (screenRotationAnimation != null) {
screenRotationAnimation.kill();
}
displayContent.updateDisplayInfo();
final int originalRotation = overrideOriginalRotation != ROTATION_UNDEFINED