Merge "Use ashmem backed bitmaps for passing around notifications" into mnc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
25a5f30128
@@ -3586,12 +3586,19 @@ public class Notification implements Parcelable
|
||||
* object.
|
||||
*/
|
||||
public Notification build() {
|
||||
if (mSmallIcon != null) {
|
||||
mSmallIcon.convertToAshmem();
|
||||
}
|
||||
if (mLargeIcon != null) {
|
||||
mLargeIcon.convertToAshmem();
|
||||
}
|
||||
mOriginatingUserId = mContext.getUserId();
|
||||
mHasThreeLines = hasThreeLines();
|
||||
|
||||
Notification n = buildUnstyled();
|
||||
|
||||
if (mStyle != null) {
|
||||
mStyle.purgeResources();
|
||||
n = mStyle.buildStyled(n);
|
||||
}
|
||||
|
||||
@@ -3790,6 +3797,8 @@ public class Notification implements Parcelable
|
||||
return wip;
|
||||
}
|
||||
|
||||
public void purgeResources() {}
|
||||
|
||||
// The following methods are split out so we can re-create notification partially.
|
||||
/**
|
||||
* @hide
|
||||
@@ -3901,8 +3910,18 @@ public class Notification implements Parcelable
|
||||
return this;
|
||||
}
|
||||
|
||||
private RemoteViews makeBigContentView() {
|
||||
@Override
|
||||
public void purgeResources() {
|
||||
super.purgeResources();
|
||||
if (mPicture != null && mPicture.isMutable()) {
|
||||
mPicture = mPicture.createAshmemBitmap();
|
||||
}
|
||||
if (mBigLargeIcon != null) {
|
||||
mBigLargeIcon.convertToAshmem();
|
||||
}
|
||||
}
|
||||
|
||||
private RemoteViews makeBigContentView() {
|
||||
// Replace mLargeIcon with mBigLargeIcon if mBigLargeIconSet
|
||||
// This covers the following cases:
|
||||
// 1. mBigLargeIconSet -> mBigLargeIcon (null or non-null) applies, overrides
|
||||
|
||||
@@ -109,6 +109,10 @@ public final class Icon implements Parcelable {
|
||||
return (Bitmap) mObj1;
|
||||
}
|
||||
|
||||
private void setBitmap(Bitmap b) {
|
||||
mObj1 = b;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The length of the compressed bitmap byte array held by this {@link #TYPE_DATA} Icon.
|
||||
* @hide
|
||||
@@ -346,6 +350,16 @@ public final class Icon implements Parcelable {
|
||||
return loadDrawable(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Puts the memory used by this instance into Ashmem memory, if possible.
|
||||
* @hide
|
||||
*/
|
||||
public void convertToAshmem() {
|
||||
if (mType == TYPE_BITMAP && getBitmap().isMutable()) {
|
||||
setBitmap(getBitmap().createAshmemBitmap());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes a serialized version of an Icon to the specified stream.
|
||||
*
|
||||
@@ -466,7 +480,7 @@ public final class Icon implements Parcelable {
|
||||
throw new IllegalArgumentException("Bitmap must not be null.");
|
||||
}
|
||||
final Icon rep = new Icon(TYPE_BITMAP);
|
||||
rep.mObj1 = bits;
|
||||
rep.setBitmap(bits);
|
||||
return rep;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user