Do not use HARDWARE bitmaps to extract colors
Convert it if necessary before extracting color (similar to what
WallpaperColorsLoader does)
Bug: 187721574
Test: manual
Change-Id: I1aeb5e9808d94d768b91aceaf1a6dd507f93f109
diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java
index 28a8d25..b0a5a4f 100755
--- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java
+++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java
@@ -377,7 +377,16 @@
new BitmapCropper.Callback() {
@Override
public void onBitmapCropped(Bitmap croppedBitmap) {
- onWallpaperColorsChanged(WallpaperColors.fromBitmap(croppedBitmap));
+ boolean shouldRecycle = false;
+ if (croppedBitmap.getConfig() == Bitmap.Config.HARDWARE) {
+ croppedBitmap = croppedBitmap.copy(Bitmap.Config.ARGB_8888, false);
+ shouldRecycle = true;
+ }
+ WallpaperColors colors = WallpaperColors.fromBitmap(croppedBitmap);
+ if (shouldRecycle) {
+ croppedBitmap.recycle();
+ }
+ onWallpaperColorsChanged(colors);
}
@Override