Skip to content

Commit 8d71769

Browse files
committed
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
1 parent a220a29 commit 8d71769

File tree

13 files changed

+12
-13
lines changed

13 files changed

+12
-13
lines changed

core/java/android/content/res/Resources.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1352,7 +1352,6 @@ private void clearDrawableCache(
13521352
}
13531353
}
13541354
}
1355-
cache.clear();
13561355
}
13571356

13581357
/**

graphics/java/android/graphics/drawable/AnimatedRotateDrawable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ public int getIntrinsicHeight() {
204204
@Override
205205
public ConstantState getConstantState() {
206206
if (mState.canConstantState()) {
207-
mState.mChangingConfigurations = super.getChangingConfigurations();
207+
mState.mChangingConfigurations = getChangingConfigurations();
208208
return mState;
209209
}
210210
return null;

graphics/java/android/graphics/drawable/BitmapDrawable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ public int getOpacity() {
427427

428428
@Override
429429
public final ConstantState getConstantState() {
430-
mBitmapState.mChangingConfigurations = super.getChangingConfigurations();
430+
mBitmapState.mChangingConfigurations = getChangingConfigurations();
431431
return mBitmapState;
432432
}
433433

graphics/java/android/graphics/drawable/ClipDrawable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ public int getIntrinsicHeight() {
229229
@Override
230230
public ConstantState getConstantState() {
231231
if (mClipState.canConstantState()) {
232-
mClipState.mChangingConfigurations = super.getChangingConfigurations();
232+
mClipState.mChangingConfigurations = getChangingConfigurations();
233233
return mClipState;
234234
}
235235
return null;

graphics/java/android/graphics/drawable/ColorDrawable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs)
124124

125125
@Override
126126
public ConstantState getConstantState() {
127-
mState.mChangingConfigurations = super.getChangingConfigurations();
127+
mState.mChangingConfigurations = getChangingConfigurations();
128128
return mState;
129129
}
130130

graphics/java/android/graphics/drawable/DrawableContainer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ public Drawable getCurrent() {
236236
@Override
237237
public ConstantState getConstantState() {
238238
if (mDrawableContainerState.canConstantState()) {
239-
mDrawableContainerState.mChangingConfigurations = super.getChangingConfigurations();
239+
mDrawableContainerState.mChangingConfigurations = getChangingConfigurations();
240240
return mDrawableContainerState;
241241
}
242242
return null;

graphics/java/android/graphics/drawable/GradientDrawable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -832,7 +832,7 @@ public int getIntrinsicHeight() {
832832

833833
@Override
834834
public ConstantState getConstantState() {
835-
mGradientState.mChangingConfigurations = super.getChangingConfigurations();
835+
mGradientState.mChangingConfigurations = getChangingConfigurations();
836836
return mGradientState;
837837
}
838838

graphics/java/android/graphics/drawable/InsetDrawable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ public int getIntrinsicHeight() {
238238
@Override
239239
public ConstantState getConstantState() {
240240
if (mInsetState.canConstantState()) {
241-
mInsetState.mChangingConfigurations = super.getChangingConfigurations();
241+
mInsetState.mChangingConfigurations = getChangingConfigurations();
242242
return mInsetState;
243243
}
244244
return null;

graphics/java/android/graphics/drawable/LayerDrawable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,7 @@ private void ensurePadding() {
523523
@Override
524524
public ConstantState getConstantState() {
525525
if (mLayerState.canConstantState()) {
526-
mLayerState.mChangingConfigurations = super.getChangingConfigurations();
526+
mLayerState.mChangingConfigurations = getChangingConfigurations();
527527
return mLayerState;
528528
}
529529
return null;

graphics/java/android/graphics/drawable/NinePatchDrawable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ public Region getTransparentRegion() {
327327

328328
@Override
329329
public ConstantState getConstantState() {
330-
mNinePatchState.mChangingConfigurations = super.getChangingConfigurations();
330+
mNinePatchState.mChangingConfigurations = getChangingConfigurations();
331331
return mNinePatchState;
332332
}
333333

0 commit comments

Comments
 (0)