From 19b4b019169424d62bf3edc40b9560984206cf80 Mon Sep 17 00:00:00 2001 From: sergeyv Date: Tue, 13 Dec 2016 16:06:00 -0800 Subject: [PATCH] Fix getConfig function for hw bitmaps Test: HardwareBitmapTests#testGetConfig bug:30999911 Change-Id: I93a1c9fc88567ada2462a7a3b6cef8f796844e15 --- core/jni/android/graphics/Bitmap.cpp | 3 +++ core/jni/android/graphics/Graphics.cpp | 4 ++++ core/jni/android/graphics/GraphicsJNI.h | 1 + 3 files changed, 8 insertions(+) diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp index 178e073425551..b96e8bd90ebbe 100755 --- a/core/jni/android/graphics/Bitmap.cpp +++ b/core/jni/android/graphics/Bitmap.cpp @@ -712,6 +712,9 @@ static jint Bitmap_rowBytes(JNIEnv* env, jobject, jlong bitmapHandle) { static jint Bitmap_config(JNIEnv* env, jobject, jlong bitmapHandle) { LocalScopedBitmap bitmap(bitmapHandle); + if (bitmap->bitmap().isHardware()) { + return GraphicsJNI::hardwareLegacyBitmapConfig(); + } return GraphicsJNI::colorTypeToLegacyBitmapConfig(bitmap->info().colorType()); } diff --git a/core/jni/android/graphics/Graphics.cpp b/core/jni/android/graphics/Graphics.cpp index e740428131be4..d8984d3367468 100644 --- a/core/jni/android/graphics/Graphics.cpp +++ b/core/jni/android/graphics/Graphics.cpp @@ -366,6 +366,10 @@ bool GraphicsJNI::isHardwareConfig(JNIEnv* env, jobject jconfig) { return c == kHardware_LegacyBitmapConfig; } +jint GraphicsJNI::hardwareLegacyBitmapConfig() { + return kHardware_LegacyBitmapConfig; +} + android::Canvas* GraphicsJNI::getNativeCanvas(JNIEnv* env, jobject canvas) { SkASSERT(env); SkASSERT(canvas); diff --git a/core/jni/android/graphics/GraphicsJNI.h b/core/jni/android/graphics/GraphicsJNI.h index ced9939774a94..03dc1fbe82faf 100644 --- a/core/jni/android/graphics/GraphicsJNI.h +++ b/core/jni/android/graphics/GraphicsJNI.h @@ -69,6 +69,7 @@ public: static SkColorType getNativeBitmapColorType(JNIEnv*, jobject jconfig); static bool isHardwareConfig(JNIEnv* env, jobject jconfig); + static jint hardwareLegacyBitmapConfig(); static jobject createRegion(JNIEnv* env, SkRegion* region);