summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRiley Andrews <riandrews@android.com>2015-11-01 23:36:04 -0800
committerRiley Andrews <riandrews@google.com>2015-11-03 17:46:15 +0000
commit8cee7c17119b204be88860feb812f2374d0de732 (patch)
tree5800445b3f2808335177932a24f23c9ec066a881
parenta975732a8302893a40cdc444f893bf09b7669173 (diff)
downloadframeworks_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.java4
-rwxr-xr-xcore/jni/android/graphics/Bitmap.cpp3
-rw-r--r--graphics/java/android/graphics/drawable/Icon.java4
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());
}
}