From 6efd2bad954e0e5bd74916a32f036a0f149dcd4d Mon Sep 17 00:00:00 2001 From: Christopher Lais Date: Thu, 13 Jan 2011 15:02:05 -0600 Subject: [PATCH] Don't drop the drawable cache completely on configuration change There was a lot of fancy code just above the clear to ensure that drawables that aren't affected by the change are kept, then the entire array was cleared. This patch removes the clear, so that the drawables that haven't changed are really kept, matching the logs, comments and larger part of the code. This patch also fixes the various constant states to return correct ChangingConfigurations. Change-Id: Ic11f6179537318d3de16dc58286989eb62a07f15 Old-Change-Id: I22495e6ed232dfe056207ce5155405af1fa82428 --- core/java/android/content/res/Resources.java | 1 - .../java/android/graphics/drawable/AnimatedRotateDrawable.java | 2 +- graphics/java/android/graphics/drawable/BitmapDrawable.java | 2 +- graphics/java/android/graphics/drawable/ClipDrawable.java | 2 +- graphics/java/android/graphics/drawable/ColorDrawable.java | 2 +- graphics/java/android/graphics/drawable/DrawableContainer.java | 2 +- graphics/java/android/graphics/drawable/GradientDrawable.java | 2 +- graphics/java/android/graphics/drawable/InsetDrawable.java | 2 +- graphics/java/android/graphics/drawable/LayerDrawable.java | 2 +- graphics/java/android/graphics/drawable/NinePatchDrawable.java | 2 +- graphics/java/android/graphics/drawable/RotateDrawable.java | 2 +- graphics/java/android/graphics/drawable/ScaleDrawable.java | 2 +- graphics/java/android/graphics/drawable/ShapeDrawable.java | 2 +- 13 files changed, 12 insertions(+), 13 deletions(-) diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java index e8bf29d3719ef..b40a22648be14 100755 --- a/core/java/android/content/res/Resources.java +++ b/core/java/android/content/res/Resources.java @@ -1476,7 +1476,6 @@ public class Resources { } } } - cache.clear(); } /** diff --git a/graphics/java/android/graphics/drawable/AnimatedRotateDrawable.java b/graphics/java/android/graphics/drawable/AnimatedRotateDrawable.java index 39a7dd2c492ee..94a8488009060 100644 --- a/graphics/java/android/graphics/drawable/AnimatedRotateDrawable.java +++ b/graphics/java/android/graphics/drawable/AnimatedRotateDrawable.java @@ -207,7 +207,7 @@ public class AnimatedRotateDrawable extends Drawable implements Drawable.Callbac @Override public ConstantState getConstantState() { if (mState.canConstantState()) { - mState.mChangingConfigurations = super.getChangingConfigurations(); + mState.mChangingConfigurations = getChangingConfigurations(); return mState; } return null; diff --git a/graphics/java/android/graphics/drawable/BitmapDrawable.java b/graphics/java/android/graphics/drawable/BitmapDrawable.java index 032244f35c831..2c09ddca2b9cd 100644 --- a/graphics/java/android/graphics/drawable/BitmapDrawable.java +++ b/graphics/java/android/graphics/drawable/BitmapDrawable.java @@ -439,7 +439,7 @@ public class BitmapDrawable extends Drawable { @Override public final ConstantState getConstantState() { - mBitmapState.mChangingConfigurations = super.getChangingConfigurations(); + mBitmapState.mChangingConfigurations = getChangingConfigurations(); return mBitmapState; } diff --git a/graphics/java/android/graphics/drawable/ClipDrawable.java b/graphics/java/android/graphics/drawable/ClipDrawable.java index 0d4459141f098..b333e01651436 100644 --- a/graphics/java/android/graphics/drawable/ClipDrawable.java +++ b/graphics/java/android/graphics/drawable/ClipDrawable.java @@ -232,7 +232,7 @@ public class ClipDrawable extends Drawable implements Drawable.Callback { @Override public ConstantState getConstantState() { if (mClipState.canConstantState()) { - mClipState.mChangingConfigurations = super.getChangingConfigurations(); + mClipState.mChangingConfigurations = getChangingConfigurations(); return mClipState; } return null; diff --git a/graphics/java/android/graphics/drawable/ColorDrawable.java b/graphics/java/android/graphics/drawable/ColorDrawable.java index 4d560bea3f034..4418e02a89f52 100644 --- a/graphics/java/android/graphics/drawable/ColorDrawable.java +++ b/graphics/java/android/graphics/drawable/ColorDrawable.java @@ -149,7 +149,7 @@ public class ColorDrawable extends Drawable { @Override public ConstantState getConstantState() { - mState.mChangingConfigurations = super.getChangingConfigurations(); + mState.mChangingConfigurations = getChangingConfigurations(); return mState; } diff --git a/graphics/java/android/graphics/drawable/DrawableContainer.java b/graphics/java/android/graphics/drawable/DrawableContainer.java index 0a580eb5f41c1..a9414e800e695 100644 --- a/graphics/java/android/graphics/drawable/DrawableContainer.java +++ b/graphics/java/android/graphics/drawable/DrawableContainer.java @@ -389,7 +389,7 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { @Override public ConstantState getConstantState() { if (mDrawableContainerState.canConstantState()) { - mDrawableContainerState.mChangingConfigurations = super.getChangingConfigurations(); + mDrawableContainerState.mChangingConfigurations = getChangingConfigurations(); return mDrawableContainerState; } return null; diff --git a/graphics/java/android/graphics/drawable/GradientDrawable.java b/graphics/java/android/graphics/drawable/GradientDrawable.java index da8bb1b1a80b5..65c6ccfa25d76 100644 --- a/graphics/java/android/graphics/drawable/GradientDrawable.java +++ b/graphics/java/android/graphics/drawable/GradientDrawable.java @@ -861,7 +861,7 @@ public class GradientDrawable extends Drawable { @Override public ConstantState getConstantState() { - mGradientState.mChangingConfigurations = super.getChangingConfigurations(); + mGradientState.mChangingConfigurations = getChangingConfigurations(); return mGradientState; } diff --git a/graphics/java/android/graphics/drawable/InsetDrawable.java b/graphics/java/android/graphics/drawable/InsetDrawable.java index 3a74dfdbfd602..231234cf4ee73 100644 --- a/graphics/java/android/graphics/drawable/InsetDrawable.java +++ b/graphics/java/android/graphics/drawable/InsetDrawable.java @@ -241,7 +241,7 @@ public class InsetDrawable extends Drawable implements Drawable.Callback @Override public ConstantState getConstantState() { if (mInsetState.canConstantState()) { - mInsetState.mChangingConfigurations = super.getChangingConfigurations(); + mInsetState.mChangingConfigurations = getChangingConfigurations(); return mInsetState; } return null; diff --git a/graphics/java/android/graphics/drawable/LayerDrawable.java b/graphics/java/android/graphics/drawable/LayerDrawable.java index 84da1706ad5eb..49dbbca5a6f3d 100644 --- a/graphics/java/android/graphics/drawable/LayerDrawable.java +++ b/graphics/java/android/graphics/drawable/LayerDrawable.java @@ -557,7 +557,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback { @Override public ConstantState getConstantState() { if (mLayerState.canConstantState()) { - mLayerState.mChangingConfigurations = super.getChangingConfigurations(); + mLayerState.mChangingConfigurations = getChangingConfigurations(); return mLayerState; } return null; diff --git a/graphics/java/android/graphics/drawable/NinePatchDrawable.java b/graphics/java/android/graphics/drawable/NinePatchDrawable.java index 35b831928de51..a5175c5526a37 100644 --- a/graphics/java/android/graphics/drawable/NinePatchDrawable.java +++ b/graphics/java/android/graphics/drawable/NinePatchDrawable.java @@ -323,7 +323,7 @@ public class NinePatchDrawable extends Drawable { @Override public ConstantState getConstantState() { - mNinePatchState.mChangingConfigurations = super.getChangingConfigurations(); + mNinePatchState.mChangingConfigurations = getChangingConfigurations(); return mNinePatchState; } diff --git a/graphics/java/android/graphics/drawable/RotateDrawable.java b/graphics/java/android/graphics/drawable/RotateDrawable.java index 212ddfac629d1..4f74b374cbdb2 100644 --- a/graphics/java/android/graphics/drawable/RotateDrawable.java +++ b/graphics/java/android/graphics/drawable/RotateDrawable.java @@ -192,7 +192,7 @@ public class RotateDrawable extends Drawable implements Drawable.Callback { @Override public ConstantState getConstantState() { if (mState.canConstantState()) { - mState.mChangingConfigurations = super.getChangingConfigurations(); + mState.mChangingConfigurations = getChangingConfigurations(); return mState; } return null; diff --git a/graphics/java/android/graphics/drawable/ScaleDrawable.java b/graphics/java/android/graphics/drawable/ScaleDrawable.java index 055576dc89b9c..a7ed0d0a14b59 100644 --- a/graphics/java/android/graphics/drawable/ScaleDrawable.java +++ b/graphics/java/android/graphics/drawable/ScaleDrawable.java @@ -241,7 +241,7 @@ public class ScaleDrawable extends Drawable implements Drawable.Callback { @Override public ConstantState getConstantState() { if (mScaleState.canConstantState()) { - mScaleState.mChangingConfigurations = super.getChangingConfigurations(); + mScaleState.mChangingConfigurations = getChangingConfigurations(); return mScaleState; } return null; diff --git a/graphics/java/android/graphics/drawable/ShapeDrawable.java b/graphics/java/android/graphics/drawable/ShapeDrawable.java index 92252fc06001b..cb8774ddf874c 100644 --- a/graphics/java/android/graphics/drawable/ShapeDrawable.java +++ b/graphics/java/android/graphics/drawable/ShapeDrawable.java @@ -356,7 +356,7 @@ public class ShapeDrawable extends Drawable { @Override public ConstantState getConstantState() { - mShapeState.mChangingConfigurations = super.getChangingConfigurations(); + mShapeState.mChangingConfigurations = getChangingConfigurations(); return mShapeState; }