summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2015-06-11 20:28:39 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-06-11 20:29:05 +0000
commit1b83edc6160d18323c7a0e0b892e97c05914ff81 (patch)
tree932991dca8a0cec04dd08541253fab2a912d1717
parent02184244dcd0149252676bbf24c6d9a5c9ebfd5b (diff)
parentb786bbdd1164cf3ca7fcfb8448c7c619a82118a0 (diff)
downloadframeworks_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.cpp6
-rw-r--r--graphics/java/android/graphics/BitmapShader.java4
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;