From 3e776dee3e8af646cdcfb7a60e0e301c99f05293 Mon Sep 17 00:00:00 2001 From: John Reck Date: Fri, 8 May 2015 13:59:01 -0700 Subject: [PATCH] Compatibility hack Bug: 20940526 Rather than throwing an exception on accessing a recycled() bitmap let certain operations succeed and just return dummy values. Apps appear to be relying on this. Change-Id: I74df2efdc29d93facd8553ed31cda3addf0b28eb --- graphics/java/android/graphics/Bitmap.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java index c850b074a90e..bd52848086a6 100644 --- a/graphics/java/android/graphics/Bitmap.java +++ b/graphics/java/android/graphics/Bitmap.java @@ -330,6 +330,7 @@ public final class Bitmap implements Parcelable { * @return The current generation ID for this bitmap. */ public int getGenerationId() { + if (mRecycled) return 0; return nativeGenerationId(mFinalizer.mNativeBitmap); } @@ -1040,6 +1041,7 @@ public final class Bitmap implements Parcelable { * @see BitmapFactory.Options#inPremultiplied */ public final boolean isPremultiplied() { + if (mRecycled) return false; return nativeIsPremultiplied(mFinalizer.mNativeBitmap); } @@ -1064,6 +1066,7 @@ public final class Bitmap implements Parcelable { * @see BitmapFactory.Options#inPremultiplied */ public final void setPremultiplied(boolean premultiplied) { + checkRecycled("setPremultiplied called on a recycled bitmap"); mRequestPremultiplied = premultiplied; nativeSetPremultiplied(mFinalizer.mNativeBitmap, premultiplied); } @@ -1200,6 +1203,7 @@ public final class Bitmap implements Parcelable { * that config, otherwise return null. */ public final Config getConfig() { + if (mRecycled) return Config.ARGB_8888; return Config.nativeToConfig(nativeConfig(mFinalizer.mNativeBitmap)); } @@ -1212,6 +1216,7 @@ public final class Bitmap implements Parcelable { * it will return true by default. */ public final boolean hasAlpha() { + if (mRecycled) return false; return nativeHasAlpha(mFinalizer.mNativeBitmap); } @@ -1226,6 +1231,7 @@ public final class Bitmap implements Parcelable { * non-opaque per-pixel alpha values. */ public void setHasAlpha(boolean hasAlpha) { + checkRecycled("setHasAlpha called on a recycled bitmap"); nativeSetHasAlpha(mFinalizer.mNativeBitmap, hasAlpha, mRequestPremultiplied); } @@ -1247,6 +1253,7 @@ public final class Bitmap implements Parcelable { * @see #setHasMipMap(boolean) */ public final boolean hasMipMap() { + if (mRecycled) return false; return nativeHasMipMap(mFinalizer.mNativeBitmap); } @@ -1271,6 +1278,7 @@ public final class Bitmap implements Parcelable { * @see #hasMipMap() */ public final void setHasMipMap(boolean hasMipMap) { + checkRecycled("setHasMipMap called on a recycled bitmap"); nativeSetHasMipMap(mFinalizer.mNativeBitmap, hasMipMap); } -- 2.11.0