From ebf50a4903c39fdb00b0b1f8219031e5d2365ed6 Mon Sep 17 00:00:00 2001 From: Mitsuru Oshima Date: Wed, 26 Apr 2017 18:29:49 -0700 Subject: [PATCH] Add config flag to disable transition animation. Bug: 37424692 Test: See repro step in the bug. Change-Id: Iff2a3dd53455769ff2d6cad8e501de1fc4c1199b --- core/res/res/values/config.xml | 3 +++ core/res/res/values/symbols.xml | 1 + .../com/android/server/wm/WindowManagerService.java | 12 ++++++++++++ 3 files changed, 16 insertions(+) diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 1c2e5a4067722..84f8870bb6e75 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -123,6 +123,9 @@ be sent during a change to the audio output device. --> true + + false + 200 diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index d630839db81d3..e476d893b9006 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -252,6 +252,7 @@ + diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 35870b1a49042..06527675349a1 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -569,6 +569,8 @@ public class WindowManagerService extends IWindowManager.Stub boolean mForceResizableTasks = false; boolean mSupportsPictureInPicture = false; + private boolean mDisableTransitionAnimation = false; + int getDragLayerLocked() { return mPolicy.getWindowLayerFromTypeLw(TYPE_DRAG) * TYPE_LAYER_MULTIPLIER + TYPE_LAYER_OFFSET; } @@ -966,6 +968,8 @@ public class WindowManagerService extends IWindowManager.Stub com.android.internal.R.bool.config_allowAnimationsInLowPowerMode); mMaxUiWidth = context.getResources().getInteger( com.android.internal.R.integer.config_maxUiWidth); + mDisableTransitionAnimation = context.getResources().getBoolean( + com.android.internal.R.bool.config_disableTransitionAnimation); mInputManager = inputManager; // Must be before createDisplayContentLocked. mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class); mDisplaySettings = new DisplaySettings(); @@ -2279,6 +2283,14 @@ public class WindowManagerService extends IWindowManager.Stub boolean applyAnimationLocked(AppWindowToken atoken, WindowManager.LayoutParams lp, int transit, boolean enter, boolean isVoiceInteraction) { + if (mDisableTransitionAnimation) { + if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) { + Slog.v(TAG_WM, + "applyAnimation: transition animation is disabled. atoken=" + atoken); + } + atoken.mAppAnimator.clearAnimation(); + return false; + } // Only apply an animation if the display isn't frozen. If it is // frozen, there is no reason to animate and it can cause strange // artifacts when we unfreeze the display if some different animation