diff options
author | Riley Andrews <riandrews@android.com> | 2015-11-01 23:36:04 -0800 |
---|---|---|
committer | Riley Andrews <riandrews@google.com> | 2015-11-03 17:46:15 +0000 |
commit | 8cee7c17119b204be88860feb812f2374d0de732 (patch) | |
tree | 5800445b3f2808335177932a24f23c9ec066a881 | |
parent | a975732a8302893a40cdc444f893bf09b7669173 (diff) | |
download | frameworks_base-8cee7c17119b204be88860feb812f2374d0de732.zip frameworks_base-8cee7c17119b204be88860feb812f2374d0de732.tar.gz frameworks_base-8cee7c17119b204be88860feb812f2374d0de732.tar.bz2 |
Limit persistent ashmem backed fds to a minimum of 128kB.
Bug 25256717
Change-Id: Ieb356006df0a6545b89de44d3d8fd4b46312b3b8
Signed-off-by: Riley Andrews <riandrews@google.com>
-rw-r--r-- | core/java/android/app/Notification.java | 4 | ||||
-rwxr-xr-x | core/jni/android/graphics/Bitmap.cpp | 3 | ||||
-rw-r--r-- | graphics/java/android/graphics/drawable/Icon.java | 4 |
3 files changed, 8 insertions, 3 deletions
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index f3f2428..a2e8fd1 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -3969,7 +3969,9 @@ public class Notification implements Parcelable @Override public void purgeResources() { super.purgeResources(); - if (mPicture != null && mPicture.isMutable()) { + if (mPicture != null && + mPicture.isMutable() && + mPicture.getAllocationByteCount() >= (128 * (1 << 10))) { mPicture = mPicture.createAshmemBitmap(); } if (mBigLargeIcon != null) { diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp index fbe3ece..6cbdeaa 100755 --- a/core/jni/android/graphics/Bitmap.cpp +++ b/core/jni/android/graphics/Bitmap.cpp @@ -28,6 +28,7 @@ #include <cutils/ashmem.h> #define DEBUG_PARCEL 0 +#define ASHMEM_BITMAP_MIN_SIZE (128 * (1 << 10)) namespace android { @@ -993,7 +994,7 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) { // Map the bitmap in place from the ashmem region if possible otherwise copy. Bitmap* nativeBitmap; - if (blob.fd() >= 0 && (blob.isMutable() || !isMutable)) { + if (blob.fd() >= 0 && (blob.isMutable() || !isMutable) && (size >= ASHMEM_BITMAP_MIN_SIZE)) { #if DEBUG_PARCEL ALOGD("Bitmap.createFromParcel: mapped contents of %s bitmap from %s blob " "(fds %s)", diff --git a/graphics/java/android/graphics/drawable/Icon.java b/graphics/java/android/graphics/drawable/Icon.java index 26232a9..44d7530 100644 --- a/graphics/java/android/graphics/drawable/Icon.java +++ b/graphics/java/android/graphics/drawable/Icon.java @@ -382,7 +382,9 @@ public final class Icon implements Parcelable { * @hide */ public void convertToAshmem() { - if (mType == TYPE_BITMAP && getBitmap().isMutable()) { + if (mType == TYPE_BITMAP && + getBitmap().isMutable() && + getBitmap().getAllocationByteCount() >= (128 * (1 << 10))) { setBitmap(getBitmap().createAshmemBitmap()); } } |