Merge "Keep a reference to the local matrix. Bug #3299324"
diff --git a/core/jni/android/graphics/Shader.cpp b/core/jni/android/graphics/Shader.cpp
index 4be1321..3efc41d 100644
--- a/core/jni/android/graphics/Shader.cpp
+++ b/core/jni/android/graphics/Shader.cpp
@@ -64,11 +64,6 @@
#endif
}
-static bool Shader_getLocalMatrix(JNIEnv* env, jobject, const SkShader* shader, SkMatrix* matrix)
-{
- return shader ? shader->getLocalMatrix(matrix) : false;
-}
-
static void Shader_setLocalMatrix(JNIEnv* env, jobject o, SkShader* shader, SkiaShader* skiaShader,
const SkMatrix* matrix)
{
@@ -471,7 +466,6 @@
static JNINativeMethod gShaderMethods[] = {
{ "nativeDestructor", "(II)V", (void*)Shader_destructor },
- { "nativeGetLocalMatrix", "(II)Z", (void*)Shader_getLocalMatrix },
{ "nativeSetLocalMatrix", "(III)V", (void*)Shader_setLocalMatrix }
};
diff --git a/graphics/java/android/graphics/Shader.java b/graphics/java/android/graphics/Shader.java
index 0400b5c..3acf1ea 100644
--- a/graphics/java/android/graphics/Shader.java
+++ b/graphics/java/android/graphics/Shader.java
@@ -34,6 +34,8 @@
*/
public int native_shader;
+ private Matrix mLocalMatrix;
+
public enum TileMode {
/**
* replicate the edge color if the shader draws outside of its
@@ -62,7 +64,11 @@
* @return true if the shader has a non-identity local matrix
*/
public boolean getLocalMatrix(Matrix localM) {
- return nativeGetLocalMatrix(native_instance, localM.native_instance);
+ if (mLocalMatrix != null) {
+ localM.set(mLocalMatrix);
+ return true;
+ }
+ return false;
}
/**
@@ -71,6 +77,7 @@
* @param localM The shader's new local matrix, or null to specify identity
*/
public void setLocalMatrix(Matrix localM) {
+ mLocalMatrix = localM;
nativeSetLocalMatrix(native_instance, native_shader,
localM == null ? 0 : localM.native_instance);
}
@@ -84,8 +91,6 @@
}
private static native void nativeDestructor(int native_shader, int native_skiaShader);
- private static native boolean nativeGetLocalMatrix(int native_shader,
- int matrix_instance);
private static native void nativeSetLocalMatrix(int native_shader,
int native_skiaShader, int matrix_instance);
}