diff --git a/core/jni/Android.mk b/core/jni/Android.mk index 91e831074615a..f5429a1c50827 100644 --- a/core/jni/Android.mk +++ b/core/jni/Android.mk @@ -211,6 +211,7 @@ LOCAL_C_INCLUDES += \ external/skia/include/private \ external/skia/src/core \ external/skia/src/effects \ + external/skia/src/image \ external/skia/src/images \ external/sqlite/dist \ external/sqlite/android \ diff --git a/core/jni/android/graphics/Shader.cpp b/core/jni/android/graphics/Shader.cpp index 657b1ef63043f..0de46e6b4d046 100644 --- a/core/jni/android/graphics/Shader.cpp +++ b/core/jni/android/graphics/Shader.cpp @@ -95,15 +95,13 @@ static jlong BitmapShader_constructor(JNIEnv* env, jobject o, jobject jbitmap, // we'll pass an empty SkBitmap to avoid crashing/excepting for compatibility. GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap); } - sk_sp s = SkMakeBitmapShader(bitmap, - (SkShader::TileMode)tileModeX, - (SkShader::TileMode)tileModeY, - nullptr, - kNever_SkCopyPixelsMode, - nullptr); - ThrowIAE_IfNull(env, s.get()); - return reinterpret_cast(s.release()); + sk_sp image = SkMakeImageFromRasterBitmap(bitmap, kNever_SkCopyPixelsMode); + sk_sp shader = image->makeShader((SkShader::TileMode)tileModeX, + (SkShader::TileMode)tileModeY); + + ThrowIAE_IfNull(env, shader.get()); + return reinterpret_cast(shader.release()); } ///////////////////////////////////////////////////////////////////////////////////////////////