From 42e9e4890b2aec055ba40f8c80bb2810a40f2b15 Mon Sep 17 00:00:00 2001 From: wilsonshih Date: Fri, 29 May 2020 15:49:05 +0800 Subject: [PATCH] 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 --- .../java/com/android/server/wm/WindowManagerService.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 8934e8f5c2e05..b1857f1094ce0 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -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