Loading core/jni/android/graphics/ColorFilter.cpp +21 −11 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include "SkPorterDuff.h" #include <SkiaColorFilter.h> #include <Caches.h> namespace android { Loading @@ -32,28 +33,37 @@ using namespace uirenderer; class SkColorFilterGlue { public: static void finalizer(JNIEnv* env, jobject clazz, SkColorFilter* obj, SkiaColorFilter* f) { delete f; obj->safeUnref(); // f == NULL when not !USE_OPENGL_RENDERER, so no need to delete outside the ifdef #ifdef USE_OPENGL_RENDERER if (android::uirenderer::Caches::hasInstance()) { android::uirenderer::Caches::getInstance().resourceCache.destructor(f); } else { delete f; } #endif } static SkiaColorFilter* glCreatePorterDuffFilter(JNIEnv* env, jobject, jint srcColor, SkPorterDuff::Mode mode) { static SkiaColorFilter* glCreatePorterDuffFilter(JNIEnv* env, jobject, SkColorFilter *skFilter, jint srcColor, SkPorterDuff::Mode mode) { #ifdef USE_OPENGL_RENDERER return new SkiaBlendFilter(srcColor, SkPorterDuff::ToXfermodeMode(mode)); return new SkiaBlendFilter(skFilter, srcColor, SkPorterDuff::ToXfermodeMode(mode)); #else return NULL; #endif } static SkiaColorFilter* glCreateLightingFilter(JNIEnv* env, jobject, jint mul, jint add) { static SkiaColorFilter* glCreateLightingFilter(JNIEnv* env, jobject, SkColorFilter *skFilter, jint mul, jint add) { #ifdef USE_OPENGL_RENDERER return new SkiaLightingFilter(mul, add); return new SkiaLightingFilter(skFilter, mul, add); #else return NULL; #endif } static SkiaColorFilter* glCreateColorMatrixFilter(JNIEnv* env, jobject, jfloatArray jarray) { static SkiaColorFilter* glCreateColorMatrixFilter(JNIEnv* env, jobject, SkColorFilter *skFilter, jfloatArray jarray) { #ifdef USE_OPENGL_RENDERER AutoJavaFloatArray autoArray(env, jarray, 20); const float* src = autoArray.ptr(); Loading @@ -70,7 +80,7 @@ public: colorVector[2] = src[14]; colorVector[3] = src[19]; return new SkiaColorMatrixFilter(colorMatrix, colorVector); return new SkiaColorMatrixFilter(skFilter, colorMatrix, colorVector); #else return NULL; #endif Loading Loading @@ -107,17 +117,17 @@ static JNINativeMethod colorfilter_methods[] = { static JNINativeMethod porterduff_methods[] = { { "native_CreatePorterDuffFilter", "(II)I", (void*) SkColorFilterGlue::CreatePorterDuffFilter }, { "nCreatePorterDuffFilter", "(II)I", (void*) SkColorFilterGlue::glCreatePorterDuffFilter } { "nCreatePorterDuffFilter", "(III)I", (void*) SkColorFilterGlue::glCreatePorterDuffFilter } }; static JNINativeMethod lighting_methods[] = { { "native_CreateLightingFilter", "(II)I", (void*) SkColorFilterGlue::CreateLightingFilter }, { "nCreateLightingFilter", "(II)I", (void*) SkColorFilterGlue::glCreateLightingFilter }, { "nCreateLightingFilter", "(III)I", (void*) SkColorFilterGlue::glCreateLightingFilter }, }; static JNINativeMethod colormatrix_methods[] = { { "nativeColorMatrixFilter", "([F)I", (void*) SkColorFilterGlue::CreateColorMatrixFilter }, { "nColorMatrixFilter", "([F)I", (void*) SkColorFilterGlue::glCreateColorMatrixFilter } { "nColorMatrixFilter", "(I[F)I", (void*) SkColorFilterGlue::glCreateColorMatrixFilter } }; #define REG(env, name, array) \ Loading core/jni/android/graphics/Shader.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,8 @@ static void Shader_destructor(JNIEnv* env, jobject o, SkShader* shader, SkiaShad #ifdef USE_OPENGL_RENDERER if (android::uirenderer::Caches::hasInstance()) { android::uirenderer::Caches::getInstance().resourceCache.destructor(skiaShader); } else { delete skiaShader; } #endif } Loading graphics/java/android/graphics/ColorMatrixColorFilter.java +3 −3 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ public class ColorMatrixColorFilter extends ColorFilter { public ColorMatrixColorFilter(ColorMatrix matrix) { final float[] colorMatrix = matrix.getArray(); native_instance = nativeColorMatrixFilter(colorMatrix); nativeColorFilter = nColorMatrixFilter(colorMatrix); nativeColorFilter = nColorMatrixFilter(native_instance, colorMatrix); } /** Loading @@ -42,9 +42,9 @@ public class ColorMatrixColorFilter extends ColorFilter { throw new ArrayIndexOutOfBoundsException(); } native_instance = nativeColorMatrixFilter(array); nativeColorFilter = nColorMatrixFilter(array); nativeColorFilter = nColorMatrixFilter(native_instance, array); } private static native int nativeColorMatrixFilter(float[] array); private static native int nColorMatrixFilter(float[] array); private static native int nColorMatrixFilter(int nativeFilter, float[] array); } graphics/java/android/graphics/LightingColorFilter.java +2 −2 Original line number Diff line number Diff line Loading @@ -30,9 +30,9 @@ public class LightingColorFilter extends ColorFilter { */ public LightingColorFilter(int mul, int add) { native_instance = native_CreateLightingFilter(mul, add); nativeColorFilter = nCreateLightingFilter(mul, add); nativeColorFilter = nCreateLightingFilter(native_instance, mul, add); } private static native int native_CreateLightingFilter(int mul, int add); private static native int nCreateLightingFilter(int mul, int add); private static native int nCreateLightingFilter(int nativeFilter, int mul, int add); } graphics/java/android/graphics/PorterDuffColorFilter.java +3 −2 Original line number Diff line number Diff line Loading @@ -26,9 +26,10 @@ public class PorterDuffColorFilter extends ColorFilter { */ public PorterDuffColorFilter(int srcColor, PorterDuff.Mode mode) { native_instance = native_CreatePorterDuffFilter(srcColor, mode.nativeInt); nativeColorFilter = nCreatePorterDuffFilter(srcColor, mode.nativeInt); nativeColorFilter = nCreatePorterDuffFilter(native_instance, srcColor, mode.nativeInt); } private static native int native_CreatePorterDuffFilter(int srcColor, int porterDuffMode); private static native int nCreatePorterDuffFilter(int srcColor, int porterDuffMode); private static native int nCreatePorterDuffFilter(int nativeFilter, int srcColor, int porterDuffMode); } Loading
core/jni/android/graphics/ColorFilter.cpp +21 −11 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include "SkPorterDuff.h" #include <SkiaColorFilter.h> #include <Caches.h> namespace android { Loading @@ -32,28 +33,37 @@ using namespace uirenderer; class SkColorFilterGlue { public: static void finalizer(JNIEnv* env, jobject clazz, SkColorFilter* obj, SkiaColorFilter* f) { delete f; obj->safeUnref(); // f == NULL when not !USE_OPENGL_RENDERER, so no need to delete outside the ifdef #ifdef USE_OPENGL_RENDERER if (android::uirenderer::Caches::hasInstance()) { android::uirenderer::Caches::getInstance().resourceCache.destructor(f); } else { delete f; } #endif } static SkiaColorFilter* glCreatePorterDuffFilter(JNIEnv* env, jobject, jint srcColor, SkPorterDuff::Mode mode) { static SkiaColorFilter* glCreatePorterDuffFilter(JNIEnv* env, jobject, SkColorFilter *skFilter, jint srcColor, SkPorterDuff::Mode mode) { #ifdef USE_OPENGL_RENDERER return new SkiaBlendFilter(srcColor, SkPorterDuff::ToXfermodeMode(mode)); return new SkiaBlendFilter(skFilter, srcColor, SkPorterDuff::ToXfermodeMode(mode)); #else return NULL; #endif } static SkiaColorFilter* glCreateLightingFilter(JNIEnv* env, jobject, jint mul, jint add) { static SkiaColorFilter* glCreateLightingFilter(JNIEnv* env, jobject, SkColorFilter *skFilter, jint mul, jint add) { #ifdef USE_OPENGL_RENDERER return new SkiaLightingFilter(mul, add); return new SkiaLightingFilter(skFilter, mul, add); #else return NULL; #endif } static SkiaColorFilter* glCreateColorMatrixFilter(JNIEnv* env, jobject, jfloatArray jarray) { static SkiaColorFilter* glCreateColorMatrixFilter(JNIEnv* env, jobject, SkColorFilter *skFilter, jfloatArray jarray) { #ifdef USE_OPENGL_RENDERER AutoJavaFloatArray autoArray(env, jarray, 20); const float* src = autoArray.ptr(); Loading @@ -70,7 +80,7 @@ public: colorVector[2] = src[14]; colorVector[3] = src[19]; return new SkiaColorMatrixFilter(colorMatrix, colorVector); return new SkiaColorMatrixFilter(skFilter, colorMatrix, colorVector); #else return NULL; #endif Loading Loading @@ -107,17 +117,17 @@ static JNINativeMethod colorfilter_methods[] = { static JNINativeMethod porterduff_methods[] = { { "native_CreatePorterDuffFilter", "(II)I", (void*) SkColorFilterGlue::CreatePorterDuffFilter }, { "nCreatePorterDuffFilter", "(II)I", (void*) SkColorFilterGlue::glCreatePorterDuffFilter } { "nCreatePorterDuffFilter", "(III)I", (void*) SkColorFilterGlue::glCreatePorterDuffFilter } }; static JNINativeMethod lighting_methods[] = { { "native_CreateLightingFilter", "(II)I", (void*) SkColorFilterGlue::CreateLightingFilter }, { "nCreateLightingFilter", "(II)I", (void*) SkColorFilterGlue::glCreateLightingFilter }, { "nCreateLightingFilter", "(III)I", (void*) SkColorFilterGlue::glCreateLightingFilter }, }; static JNINativeMethod colormatrix_methods[] = { { "nativeColorMatrixFilter", "([F)I", (void*) SkColorFilterGlue::CreateColorMatrixFilter }, { "nColorMatrixFilter", "([F)I", (void*) SkColorFilterGlue::glCreateColorMatrixFilter } { "nColorMatrixFilter", "(I[F)I", (void*) SkColorFilterGlue::glCreateColorMatrixFilter } }; #define REG(env, name, array) \ Loading
core/jni/android/graphics/Shader.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,8 @@ static void Shader_destructor(JNIEnv* env, jobject o, SkShader* shader, SkiaShad #ifdef USE_OPENGL_RENDERER if (android::uirenderer::Caches::hasInstance()) { android::uirenderer::Caches::getInstance().resourceCache.destructor(skiaShader); } else { delete skiaShader; } #endif } Loading
graphics/java/android/graphics/ColorMatrixColorFilter.java +3 −3 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ public class ColorMatrixColorFilter extends ColorFilter { public ColorMatrixColorFilter(ColorMatrix matrix) { final float[] colorMatrix = matrix.getArray(); native_instance = nativeColorMatrixFilter(colorMatrix); nativeColorFilter = nColorMatrixFilter(colorMatrix); nativeColorFilter = nColorMatrixFilter(native_instance, colorMatrix); } /** Loading @@ -42,9 +42,9 @@ public class ColorMatrixColorFilter extends ColorFilter { throw new ArrayIndexOutOfBoundsException(); } native_instance = nativeColorMatrixFilter(array); nativeColorFilter = nColorMatrixFilter(array); nativeColorFilter = nColorMatrixFilter(native_instance, array); } private static native int nativeColorMatrixFilter(float[] array); private static native int nColorMatrixFilter(float[] array); private static native int nColorMatrixFilter(int nativeFilter, float[] array); }
graphics/java/android/graphics/LightingColorFilter.java +2 −2 Original line number Diff line number Diff line Loading @@ -30,9 +30,9 @@ public class LightingColorFilter extends ColorFilter { */ public LightingColorFilter(int mul, int add) { native_instance = native_CreateLightingFilter(mul, add); nativeColorFilter = nCreateLightingFilter(mul, add); nativeColorFilter = nCreateLightingFilter(native_instance, mul, add); } private static native int native_CreateLightingFilter(int mul, int add); private static native int nCreateLightingFilter(int mul, int add); private static native int nCreateLightingFilter(int nativeFilter, int mul, int add); }
graphics/java/android/graphics/PorterDuffColorFilter.java +3 −2 Original line number Diff line number Diff line Loading @@ -26,9 +26,10 @@ public class PorterDuffColorFilter extends ColorFilter { */ public PorterDuffColorFilter(int srcColor, PorterDuff.Mode mode) { native_instance = native_CreatePorterDuffFilter(srcColor, mode.nativeInt); nativeColorFilter = nCreatePorterDuffFilter(srcColor, mode.nativeInt); nativeColorFilter = nCreatePorterDuffFilter(native_instance, srcColor, mode.nativeInt); } private static native int native_CreatePorterDuffFilter(int srcColor, int porterDuffMode); private static native int nCreatePorterDuffFilter(int srcColor, int porterDuffMode); private static native int nCreatePorterDuffFilter(int nativeFilter, int srcColor, int porterDuffMode); }