diff options
author | Chris Craik <ccraik@google.com> | 2015-06-11 20:28:39 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-11 20:29:05 +0000 |
commit | 1b83edc6160d18323c7a0e0b892e97c05914ff81 (patch) | |
tree | 932991dca8a0cec04dd08541253fab2a912d1717 | |
parent | 02184244dcd0149252676bbf24c6d9a5c9ebfd5b (diff) | |
parent | b786bbdd1164cf3ca7fcfb8448c7c619a82118a0 (diff) | |
download | frameworks_base-1b83edc6160d18323c7a0e0b892e97c05914ff81.zip frameworks_base-1b83edc6160d18323c7a0e0b892e97c05914ff81.tar.gz frameworks_base-1b83edc6160d18323c7a0e0b892e97c05914ff81.tar.bz2 |
Merge "Workaround shader crash" into mnc-dev
-rw-r--r-- | core/jni/android/graphics/Shader.cpp | 6 | ||||
-rw-r--r-- | graphics/java/android/graphics/BitmapShader.java | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/core/jni/android/graphics/Shader.cpp b/core/jni/android/graphics/Shader.cpp index d0f7591..ad3a5e2 100644 --- a/core/jni/android/graphics/Shader.cpp +++ b/core/jni/android/graphics/Shader.cpp @@ -84,7 +84,11 @@ static jlong BitmapShader_constructor(JNIEnv* env, jobject o, jobject jbitmap, jint tileModeX, jint tileModeY) { SkBitmap bitmap; - GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap); + if (jbitmap) { + // Only pass a valid SkBitmap object to the constructor if the Bitmap exists. Otherwise, + // we'll pass an empty SkBitmap to avoid crashing/excepting for compatibility. + GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap); + } SkShader* s = SkShader::CreateBitmapShader(bitmap, (SkShader::TileMode)tileModeX, (SkShader::TileMode)tileModeY); diff --git a/graphics/java/android/graphics/BitmapShader.java b/graphics/java/android/graphics/BitmapShader.java index bd74bc8..9211225 100644 --- a/graphics/java/android/graphics/BitmapShader.java +++ b/graphics/java/android/graphics/BitmapShader.java @@ -16,6 +16,8 @@ package android.graphics; +import android.annotation.NonNull; + /** * Shader used to draw a bitmap as a texture. The bitmap can be repeated or * mirrored by setting the tiling mode. @@ -38,7 +40,7 @@ public class BitmapShader extends Shader { * @param tileX The tiling mode for x to draw the bitmap in. * @param tileY The tiling mode for y to draw the bitmap in. */ - public BitmapShader(Bitmap bitmap, TileMode tileX, TileMode tileY) { + public BitmapShader(@NonNull Bitmap bitmap, TileMode tileX, TileMode tileY) { mBitmap = bitmap; mTileX = tileX; mTileY = tileY; |