summaryrefslogtreecommitdiffstats
path: root/core/jni
diff options
context:
space:
mode:
Diffstat (limited to 'core/jni')
-rw-r--r--core/jni/android/graphics/Bitmap.cpp29
1 files changed, 6 insertions, 23 deletions
diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp
index da055fc..18bd754 100644
--- a/core/jni/android/graphics/Bitmap.cpp
+++ b/core/jni/android/graphics/Bitmap.cpp
@@ -392,20 +392,10 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) {
SkSafeUnref(ctable);
size_t size = bitmap->getSize();
-
- android::Parcel::ReadableBlob blob;
- android::status_t status = p->readBlob(size, &blob);
- if (status) {
- doThrowRE(env, "Could not read bitmap from parcel blob.");
- delete bitmap;
- return NULL;
- }
-
bitmap->lockPixels();
- memcpy(bitmap->getPixels(), blob.data(), size);
+ memcpy(bitmap->getPixels(), p->readInplace(size), size);
bitmap->unlockPixels();
- blob.release();
return GraphicsJNI::createBitmap(env, bitmap, buffer, isMutable, NULL, density);
}
@@ -441,24 +431,17 @@ static jboolean Bitmap_writeToParcel(JNIEnv* env, jobject,
}
size_t size = bitmap->getSize();
-
- android::Parcel::WritableBlob blob;
- android::status_t status = p->writeBlob(size, &blob);
- if (status) {
- doThrowRE(env, "Could not write bitmap to parcel blob.");
- return false;
- }
-
bitmap->lockPixels();
+ void* pDst = p->writeInplace(size);
+
const void* pSrc = bitmap->getPixels();
+
if (pSrc == NULL) {
- memset(blob.data(), 0, size);
+ memset(pDst, 0, size);
} else {
- memcpy(blob.data(), pSrc, size);
+ memcpy(pDst, pSrc, size);
}
bitmap->unlockPixels();
-
- blob.release();
return true;
}