From 9985065af028ea331b6ae5303f41354670bc9f45 Mon Sep 17 00:00:00 2001 From: John Reck Date: Thu, 6 Apr 2023 17:06:22 -0400 Subject: Null out gainmaps on inBitmap re-use Bug: 277230526 Test: android.graphics.cts.GainmapTest#testDecodeGainmapBitmapFactoryReuse Change-Id: I437f2599f023d83bdd70f1bf123357318c79b4e3 --- graphics/java/android/graphics/Bitmap.java | 1 + graphics/java/android/graphics/BitmapFactory.java | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'graphics/java/android') diff --git a/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java index 8dd23b70ae61..25b074d20b81 100644 --- a/graphics/java/android/graphics/Bitmap.java +++ b/graphics/java/android/graphics/Bitmap.java @@ -1921,6 +1921,7 @@ public final class Bitmap implements Parcelable { */ 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 701e20c499da..1da8e189d768 100644 --- a/graphics/java/android/graphics/BitmapFactory.java +++ b/graphics/java/android/graphics/BitmapFactory.java @@ -482,7 +482,9 @@ public class BitmapFactory { 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(); } -- cgit v1.2.3-59-g8ed1b