From 3ea7f151576f197df4bd6c3cce46f229cc281698 Mon Sep 17 00:00:00 2001 From: Sam Judd Date: Mon, 20 Oct 2014 09:31:42 -0700 Subject: Handle null Config requests in LruBitmapPool. Fixes #194. --- .../com/bumptech/glide/load/engine/bitmap_recycle/LruBitmapPool.java | 5 ++++- .../java/com/bumptech/glide/load/resource/bitmap/CenterCrop.java | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'library/src/main') diff --git a/library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/LruBitmapPool.java b/library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/LruBitmapPool.java index c5767869..cc59abc1 100644 --- a/library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/LruBitmapPool.java +++ b/library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/LruBitmapPool.java @@ -19,6 +19,7 @@ import java.util.Set; */ public class LruBitmapPool implements BitmapPool { private static final String TAG = "LruBitmapPool"; + private static final Bitmap.Config DEFAULT_CONFIG = Bitmap.Config.ARGB_8888; private final LruPoolStrategy strategy; private final int initialMaxSize; @@ -101,7 +102,9 @@ public class LruBitmapPool implements BitmapPool { @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1) @Override public synchronized Bitmap getDirty(int width, int height, Bitmap.Config config) { - final Bitmap result = strategy.get(width, height, config); + // Config will be null for non public config types, which can lead to transformations naively passing in + // null as the requested config here. See issue #194. + final Bitmap result = strategy.get(width, height, config != null ? config : DEFAULT_CONFIG); if (result == null) { if (Log.isLoggable(TAG, Log.DEBUG)) { Log.d(TAG, "Missing bitmap=" + strategy.logBitmap(width, height, config)); diff --git a/library/src/main/java/com/bumptech/glide/load/resource/bitmap/CenterCrop.java b/library/src/main/java/com/bumptech/glide/load/resource/bitmap/CenterCrop.java index d3633edd..62eda0fa 100644 --- a/library/src/main/java/com/bumptech/glide/load/resource/bitmap/CenterCrop.java +++ b/library/src/main/java/com/bumptech/glide/load/resource/bitmap/CenterCrop.java @@ -25,7 +25,8 @@ public class CenterCrop extends BitmapTransformation { @SuppressWarnings("PMD.CompareObjectsWithEquals") @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { - final Bitmap toReuse = pool.get(outWidth, outHeight, toTransform.getConfig()); + final Bitmap toReuse = pool.get(outWidth, outHeight, toTransform.getConfig() != null + ? toTransform.getConfig() : Bitmap.Config.ARGB_8888); Bitmap transformed = TransformationUtils.centerCrop(toReuse, toTransform, outWidth, outHeight); if (toReuse != null && toReuse != transformed && !pool.put(toReuse)) { toReuse.recycle(); -- cgit v1.2.3