diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index d3c31d78d1a94..ea1a3307a0eda 100755
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -2102,4 +2102,7 @@
false
+
+
+ false
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index a4dc155759a08..7367d95e195f4 100755
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -282,6 +282,7 @@
+
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 0cda6fd3cf46a..ad6aa7528d102 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -340,6 +340,7 @@ public class WindowManagerService extends IWindowManager.Stub
final boolean mHasPermanentDpad;
final long mDrawLockTimeoutMillis;
+ final boolean mAllowAnimationsInLowPowerMode;
final boolean mAllowBootMessages;
@@ -831,6 +832,8 @@ public class WindowManagerService extends IWindowManager.Stub
com.android.internal.R.bool.config_defaultInTouchMode);
mDrawLockTimeoutMillis = context.getResources().getInteger(
com.android.internal.R.integer.config_drawLockTimeoutMillis);
+ mAllowAnimationsInLowPowerMode = context.getResources().getBoolean(
+ com.android.internal.R.bool.config_allowAnimationsInLowPowerMode);
mInputManager = inputManager; // Must be before createDisplayContentLocked.
mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class);
mDisplaySettings = new DisplaySettings();
@@ -856,7 +859,7 @@ public class WindowManagerService extends IWindowManager.Stub
@Override
public void onLowPowerModeChanged(boolean enabled) {
synchronized (mWindowMap) {
- if (mAnimationsDisabled != enabled) {
+ if (mAnimationsDisabled != enabled && !mAllowAnimationsInLowPowerMode) {
mAnimationsDisabled = enabled;
dispatchNewAnimatorScaleLocked(null);
}