From 848cf82aafcfb9cc1448fcb8d553d8ba9d625ca6 Mon Sep 17 00:00:00 2001 From: David Stevens Date: Tue, 1 Aug 2017 17:54:23 -0700 Subject: [PATCH] Only use WM screen rotation animation on default display Configuration changes cause WindowManagerService to freeze any displays with activities, which causes a screen rotation animation to be applied to those displays. However, ScreenRotationAnimation always uses the default display, so it shouldn't be used for non-default displays. Bug: 63682998 Test: manual Change-Id: Ic66c6e47c030393fbbe5ecbfecd90d4929871349 --- .../java/com/android/server/wm/ScreenRotationAnimation.java | 2 +- .../core/java/com/android/server/wm/WindowManagerService.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java index 83337ca98e359..08a9caa80d1e3 100644 --- a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java +++ b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java @@ -280,7 +280,7 @@ class ScreenRotationAnimation { // capture a screenshot into the surface we just created Surface sur = new Surface(); sur.copyFrom(mSurfaceControl); - // FIXME: we should use the proper display + // TODO(multidisplay): we should use the proper display SurfaceControl.screenshot(SurfaceControl.getBuiltInDisplay( SurfaceControl.BUILT_IN_DISPLAY_ID_MAIN), sur); mSurfaceControl.setLayerStack(display.getLayerStack()); diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 5db691ef10f77..4dae279964074 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -6047,7 +6047,8 @@ public class WindowManagerService extends IWindowManager.Stub Debug.startMethodTracing(file.toString(), 8 * 1024 * 1024); } - if (CUSTOM_SCREEN_ROTATION) { + // TODO(multidisplay): rotation on non-default displays + if (CUSTOM_SCREEN_ROTATION && displayContent.isDefaultDisplay) { mExitAnimId = exitAnim; mEnterAnimId = enterAnim; ScreenRotationAnimation screenRotationAnimation = @@ -6059,7 +6060,6 @@ public class WindowManagerService extends IWindowManager.Stub // Check whether the current screen contains any secure content. boolean isSecure = displayContent.hasSecureWindowOnScreen(); - // TODO(multidisplay): rotation on main screen only. displayContent.updateDisplayInfo(); screenRotationAnimation = new ScreenRotationAnimation(mContext, displayContent, mFxSession, inTransaction, mPolicy.isDefaultOrientationForced(), isSecure,