summaryrefslogtreecommitdiff
path: root/src/com/android
diff options
context:
space:
mode:
authorSantiago Etchebehere <santie@google.com>2022-04-28 04:00:18 -0700
committerSantiago Etchebehere <santie@google.com>2022-04-29 11:59:32 +0000
commit4c74f6f9fe81f1d8a1071e235c76c73b29ed3ff8 (patch)
tree613a0867587574054a92a5bf6a2c0ab0b5205d43 /src/com/android
parentdd2fa83ceec988a457918669507f576d13f0cac9 (diff)
downloadThemePicker-4c74f6f9fe81f1d8a1071e235c76c73b29ed3ff8.tar.gz
Make reloading color options thread safe
Use new lists for color options and copy them to avoid concurrent modification if we get a colors changed event from the wallpaper while traversing them Bug: 229684864 Fixes: 229549608 Test: manual Change-Id: Ida3074742861648c5f4da48c788a7ea8d1fdd6bc (cherry picked from commit c30bc1f2c7dfd091d1c919f5ae0b7250a1960723)
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/customization/model/color/ColorSectionController.java15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/com/android/customization/model/color/ColorSectionController.java b/src/com/android/customization/model/color/ColorSectionController.java
index 9241e8e1..80bc3c6e 100644
--- a/src/com/android/customization/model/color/ColorSectionController.java
+++ b/src/com/android/customization/model/color/ColorSectionController.java
@@ -83,9 +83,9 @@ public class ColorSectionController implements CustomizationSectionController<Co
private final WallpaperColorsViewModel mWallpaperColorsViewModel;
private final LifecycleOwner mLifecycleOwner;
private final ColorSectionAdapter mColorSectionAdapter = new ColorSectionAdapter();
- private final List<ColorOption> mWallpaperColorOptions = new ArrayList<>();
- private final List<ColorOption> mPresetColorOptions = new ArrayList<>();
+ private List<ColorOption> mWallpaperColorOptions = new ArrayList<>();
+ private List<ColorOption> mPresetColorOptions = new ArrayList<>();
private ViewPager2 mColorSectionViewPager;
private ColorOption mSelectedColor;
private SeparatedTabLayout mTabLayout;
@@ -207,16 +207,17 @@ public class ColorSectionController implements CustomizationSectionController<Co
mColorManager.fetchOptions(new CustomizationManager.OptionsFetchedListener<ColorOption>() {
@Override
public void onOptionsLoaded(List<ColorOption> options) {
- mWallpaperColorOptions.clear();
- mPresetColorOptions.clear();
-
+ List<ColorOption> wallpaperColorOptions = new ArrayList<>();
+ List<ColorOption> presetColorOptions = new ArrayList<>();
for (ColorOption option : options) {
if (option instanceof ColorSeedOption) {
- mWallpaperColorOptions.add(option);
+ wallpaperColorOptions.add(option);
} else if (option instanceof ColorBundle) {
- mPresetColorOptions.add(option);
+ presetColorOptions.add(option);
}
}
+ mWallpaperColorOptions = wallpaperColorOptions;
+ mPresetColorOptions = presetColorOptions;
mSelectedColor = findActiveColorOption(mWallpaperColorOptions,
mPresetColorOptions);
mTabLayout.post(()-> setUpColorViewPager());