diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 1df91d95357d7..37247b0ee65ed 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 14b3711476112..afa67b7b1636c 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 aef906794a56c..e9df96bc6bf01 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;
@@ -844,6 +845,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();
@@ -869,7 +872,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);
}