Always copy and mutate icon drawables.

Fixes: 130759380
Test: visual
Change-Id: Icdf2175ce8958420f16084bd8dc7ac52e885c54f
diff --git a/src/com/android/customization/model/theme/ThemeBundle.java b/src/com/android/customization/model/theme/ThemeBundle.java
index e13efb5..5b056cf 100644
--- a/src/com/android/customization/model/theme/ThemeBundle.java
+++ b/src/com/android/customization/model/theme/ThemeBundle.java
@@ -45,7 +45,6 @@
 
 import com.android.customization.model.CustomizationManager;
 import com.android.customization.model.CustomizationOption;
-import com.android.customization.model.theme.custom.CustomTheme;
 import com.android.customization.widget.DynamicAdaptiveIconDrawable;
 import com.android.wallpaper.R;
 import com.android.wallpaper.asset.Asset;
@@ -108,7 +107,7 @@
                     mPreviewInfo.shapeDrawable);
         }
         if (!mPreviewInfo.icons.isEmpty()) {
-            Drawable icon = mPreviewInfo.icons.get(0).mutate();
+            Drawable icon = mPreviewInfo.icons.get(0).getConstantState().newDrawable().mutate();
             icon.setTint(res.getColor(R.color.icon_thumbnail_color, null));
             ((ImageView) view.findViewById(R.id.theme_option_icon)).setImageDrawable(
                     icon);
diff --git a/src/com/android/customization/picker/theme/ThemeFragment.java b/src/com/android/customization/picker/theme/ThemeFragment.java
index 7e1982a..7f6754f 100644
--- a/src/com/android/customization/picker/theme/ThemeFragment.java
+++ b/src/com/android/customization/picker/theme/ThemeFragment.java
@@ -384,7 +384,8 @@
             ViewGroup iconsContainer = card.findViewById(R.id.theme_preview_top_bar_icons);
 
             for (int i = 0; i < iconsContainer.getChildCount() && i < mIcons.size(); i++) {
-                ((ImageView)iconsContainer.getChildAt(i)).setImageDrawable(mIcons.get(i));
+                ((ImageView) iconsContainer.getChildAt(i))
+                        .setImageDrawable(mIcons.get(i).getConstantState().newDrawable().mutate());
             }
 
             ViewGroup body = card.findViewById(R.id.theme_preview_card_body_container);
@@ -503,7 +504,7 @@
                     }
                     for (int i = 0; i < 3 && i < previewInfo.icons.size(); i++) {
                         Drawable icon =
-                                previewInfo.icons.get(i).getConstantState().newDrawable();
+                                previewInfo.icons.get(i).getConstantState().newDrawable().mutate();
                         Drawable bgShape =
                                 previewInfo.shapeDrawable.getConstantState().newDrawable();
                         bgShape.setTint(accentColor);
@@ -548,8 +549,9 @@
                     @Override
                     protected void bindBody(boolean forceRebind) {
                         for (int i = 0; i < mIconIds.length && i < previewInfo.icons.size(); i++) {
-                            ((ImageView) card.findViewById(mIconIds[i])).setImageDrawable(
-                                    previewInfo.icons.get(i));
+                            ((ImageView) card.findViewById(mIconIds[i]))
+                                    .setImageDrawable(previewInfo.icons.get(i)
+                                            .getConstantState().newDrawable().mutate());
                         }
                     }
                 });
@@ -601,10 +603,10 @@
 
                         for (int i = 0; i < mColorTileIds.length && i < previewInfo.icons.size();
                                 i++) {
-                            Drawable icon =
-                                previewInfo.icons.get(i).getConstantState().newDrawable();
+                            Drawable icon = previewInfo.icons.get(i)
+                                    .getConstantState().newDrawable().mutate();
                             Drawable bgShape =
-                                previewInfo.shapeDrawable.getConstantState().newDrawable();
+                                    previewInfo.shapeDrawable.getConstantState().newDrawable();
                             bgShape.setTint(accentColor);
 
                             ImageView bg = card.findViewById(mColorTileIds[i]);