diff options
-rw-r--r-- | graphics/java/android/graphics/drawable/LayerDrawable.java | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/graphics/java/android/graphics/drawable/LayerDrawable.java b/graphics/java/android/graphics/drawable/LayerDrawable.java index 6698d31..383fe71 100644 --- a/graphics/java/android/graphics/drawable/LayerDrawable.java +++ b/graphics/java/android/graphics/drawable/LayerDrawable.java @@ -575,6 +575,11 @@ public class LayerDrawable extends Drawable implements Drawable.Callback { @Override public Drawable mutate() { if (!mMutated && super.mutate() == this) { + if (!mLayerState.canConstantState()) { + throw new IllegalStateException("One or more children of this LayerDrawable does " + + "not have constant state; this drawable cannot be mutated."); + } + mLayerState = new LayerState(mLayerState, this, null); final ChildDrawable[] array = mLayerState.mChildren; final int N = mLayerState.mNum; for (int i = 0; i < N; i++) { @@ -694,7 +699,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback { return stateful; } - public synchronized boolean canConstantState() { + public boolean canConstantState() { if (!mCheckedConstantState && mChildren != null) { mCanConstantState = true; final int N = mNum; |