diff options
author | jaekyun <jaekyun@chromium.org> | 2015-05-11 17:11:03 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-05-12 00:11:58 +0000 |
commit | a1d10e49da54d73e112c0a378b342bd73fa0f3a7 (patch) | |
tree | 4a3f3b3735390de32be7cc4b86572cdaaa4bab9f | |
parent | 4b6e14e878a0cea357943e248e99279a384256bb (diff) | |
download | chromium_src-a1d10e49da54d73e112c0a378b342bd73fa0f3a7.zip chromium_src-a1d10e49da54d73e112c0a378b342bd73fa0f3a7.tar.gz chromium_src-a1d10e49da54d73e112c0a378b342bd73fa0f3a7.tar.bz2 |
Check whether Java bitmap memory size is same to one of SkBitmap
This is to understand why Issue 476559 is happening.
BUG=476559
Review URL: https://codereview.chromium.org/1136053003
Cr-Commit-Position: refs/heads/master@{#329288}
-rw-r--r-- | ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java | 6 | ||||
-rw-r--r-- | ui/gfx/android/java_bitmap.cc | 2 | ||||
-rw-r--r-- | ui/gfx/android/java_bitmap.h | 2 |
3 files changed, 9 insertions, 1 deletions
diff --git a/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java b/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java index 7ad6e92..d921efa 100644 --- a/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java +++ b/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java @@ -44,7 +44,7 @@ public class BitmapHelper { } } - /** + /** * Provides a matching Bitmap.Config for the enum config value passed. * * @param bitmapFormatValue The Bitmap Configuration enum value. @@ -64,4 +64,8 @@ public class BitmapHelper { } } + @CalledByNative + private static int getByteCount(Bitmap bitmap) { + return bitmap.getByteCount(); + } } diff --git a/ui/gfx/android/java_bitmap.cc b/ui/gfx/android/java_bitmap.cc index 37da9d9..ea0a50f 100644 --- a/ui/gfx/android/java_bitmap.cc +++ b/ui/gfx/android/java_bitmap.cc @@ -29,6 +29,7 @@ JavaBitmap::JavaBitmap(jobject bitmap) size_ = gfx::Size(info.width, info.height); format_ = info.format; stride_ = info.stride; + byte_count_ = Java_BitmapHelper_getByteCount(AttachCurrentThread(), bitmap_); } JavaBitmap::~JavaBitmap() { @@ -108,6 +109,7 @@ SkBitmap CreateSkBitmapFromJavaBitmap(const JavaBitmap& jbitmap) { CHECK(false) << "Invalid Java bitmap format: " << jbitmap.format(); break; } + CHECK_EQ(jbitmap.byte_count(), static_cast<int>(skbitmap.getSize())); const void* src_pixels = jbitmap.pixels(); void* dst_pixels = skbitmap.getPixels(); memcpy(dst_pixels, src_pixels, skbitmap.getSize()); diff --git a/ui/gfx/android/java_bitmap.h b/ui/gfx/android/java_bitmap.h index 31db157..6c615ab 100644 --- a/ui/gfx/android/java_bitmap.h +++ b/ui/gfx/android/java_bitmap.h @@ -37,6 +37,7 @@ class GFX_EXPORT JavaBitmap { // Formats are in android/bitmap.h; e.g. ANDROID_BITMAP_FORMAT_RGBA_8888 inline int format() const { return format_; } inline uint32_t stride() const { return stride_; } + inline int byte_count() const { return byte_count_; } // Registers methods with JNI and returns true if succeeded. static bool RegisterJavaBitmap(JNIEnv* env); @@ -47,6 +48,7 @@ class GFX_EXPORT JavaBitmap { gfx::Size size_; int format_; uint32_t stride_; + int byte_count_; DISALLOW_COPY_AND_ASSIGN(JavaBitmap); }; |