Null out gainmaps on inBitmap re-use
Bug: 277230526
Test: android.graphics.cts.GainmapTest#testDecodeGainmapBitmapFactoryReuse
Change-Id: I437f2599f023d83bdd70f1bf123357318c79b4e3
diff --git a/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java
index 8dd23b7..25b074d 100644
--- a/graphics/java/android/graphics/Bitmap.java
+++ b/graphics/java/android/graphics/Bitmap.java
@@ -1921,6 +1921,7 @@
*/
public void setGainmap(@Nullable Gainmap gainmap) {
checkRecycled("Bitmap is recycled");
+ mGainmap = null;
nativeSetGainmap(mNativePtr, gainmap == null ? 0 : gainmap.mNativePtr);
}
diff --git a/graphics/java/android/graphics/BitmapFactory.java b/graphics/java/android/graphics/BitmapFactory.java
index 701e20c..1da8e18 100644
--- a/graphics/java/android/graphics/BitmapFactory.java
+++ b/graphics/java/android/graphics/BitmapFactory.java
@@ -482,7 +482,9 @@
if (opts == null || opts.inBitmap == null) {
return 0;
}
-
+ // Clear out the gainmap since we don't attempt to reuse it and don't want to
+ // accidentally keep it on the re-used bitmap
+ opts.inBitmap.setGainmap(null);
return opts.inBitmap.getNativeInstance();
}