diff options
| author | 2022-06-15 22:35:21 +0000 | |
|---|---|---|
| committer | 2022-06-16 12:12:42 +0000 | |
| commit | a110072a44c58d8d0cdee1d6916539602a66e9eb (patch) | |
| tree | 91b00a16f435abd4d6cc53b99dd80a23f31267c7 | |
| parent | 016c6a7320c8eed8354c63c6db20e7733bb02f61 (diff) | |
Proactively unparcel bitmaps in MediaMetadata
This ensures that the GC accounts for the underlying allocations
Bug: 215820910
Test: Manual
Change-Id: I6b1d3f17abdb513b1ac929267b3d386326fa83c4
| -rw-r--r-- | media/java/android/media/MediaMetadata.java | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/media/java/android/media/MediaMetadata.java b/media/java/android/media/MediaMetadata.java index 9976fa11d177..db5e52a44c8a 100644 --- a/media/java/android/media/MediaMetadata.java +++ b/media/java/android/media/MediaMetadata.java @@ -429,6 +429,15 @@ public final class MediaMetadata implements Parcelable { private MediaMetadata(Parcel in) { mBundle = in.readBundle(); mBitmapDimensionLimit = Math.max(in.readInt(), 1); + + // Proactively read bitmaps from known bitmap keys, to ensure that they're unparceled and + // added to mBundle's internal map. This ensures that the GC accounts for the underlying + // allocations, which it does not do if the bitmaps remain parceled (see b/215820910). + // TODO(b/223225532): Remove this workaround once the underlying allocations are properly + // tracked in NativeAllocationsRegistry. + getBitmap(METADATA_KEY_ART); + getBitmap(METADATA_KEY_ALBUM_ART); + getBitmap(METADATA_KEY_DISPLAY_ICON); } /** |