Merge "RemoteViews: make bitmaps immutable" into tm-dev am: e9a0acdfda

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17803201

Change-Id: I6c2826a62e1d8d9e173f553105351d771deb3363
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Tim Murray
2022-04-21 18:35:02 +00:00
committed by Automerger Merge Worker

View File

@@ -1588,24 +1588,33 @@ public class RemoteViews implements Parcelable, Filter {
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
ArrayList<Bitmap> mBitmaps;
SparseIntArray mBitmapHashes;
int mBitmapMemory = -1;
public BitmapCache() {
mBitmaps = new ArrayList<>();
mBitmapHashes = new SparseIntArray();
}
public BitmapCache(Parcel source) {
mBitmaps = source.createTypedArrayList(Bitmap.CREATOR);
mBitmapHashes = source.readSparseIntArray();
}
public int getBitmapId(Bitmap b) {
if (b == null) {
return -1;
} else {
if (mBitmaps.contains(b)) {
return mBitmaps.indexOf(b);
int hash = b.hashCode();
int hashId = mBitmapHashes.get(hash, -1);
if (hashId != -1) {
return hashId;
} else {
if (b.isMutable()) {
b = b.asShared();
}
mBitmaps.add(b);
mBitmapHashes.put(mBitmaps.size() - 1, hash);
mBitmapMemory = -1;
return (mBitmaps.size() - 1);
}
@@ -1616,13 +1625,13 @@ public class RemoteViews implements Parcelable, Filter {
public Bitmap getBitmapForId(int id) {
if (id == -1 || id >= mBitmaps.size()) {
return null;
} else {
return mBitmaps.get(id);
}
return mBitmaps.get(id);
}
public void writeBitmapsToParcel(Parcel dest, int flags) {
dest.writeTypedList(mBitmaps, flags);
dest.writeSparseIntArray(mBitmapHashes);
}
public int getBitmapMemory() {