Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a04e555d authored by Mike Reed's avatar Mike Reed
Browse files

check for null native objects, which never happens on a real subclass (we throw in that case)

but can happen because we allow the callers to create the base class from java.
parent 2bad713f
Loading
Loading
Loading
Loading
+17 −5
Original line number Diff line number Diff line
@@ -4,15 +4,23 @@

#include <jni.h>

static void ThrowIAE_IfNull(JNIEnv* env, void* ptr) {
    if (NULL == ptr) {
        doThrowIAE(env);
    }
}

class SkMaskFilterGlue {
public:
    static void destructor(JNIEnv* env, jobject, SkMaskFilter* filter) {
        SkASSERT(filter);
        filter->unref();
        SkSafeUnref(filter);
    }

    static SkMaskFilter* createBlur(JNIEnv* env, jobject, float radius, int blurStyle) {
        return SkBlurMaskFilter::Create(SkFloatToScalar(radius), (SkBlurMaskFilter::BlurStyle)blurStyle);
        SkMaskFilter* filter = SkBlurMaskFilter::Create(SkFloatToScalar(radius),
                                        (SkBlurMaskFilter::BlurStyle)blurStyle);
        ThrowIAE_IfNull(env, filter);
        return filter;
    }
 
    static SkMaskFilter* createEmboss(JNIEnv* env, jobject, jfloatArray dirArray, float ambient, float specular, float radius) {
@@ -24,8 +32,12 @@ public:
            direction[i] = SkFloatToScalar(values[i]);
        }

        return SkBlurMaskFilter::CreateEmboss(direction, SkFloatToScalar(ambient),
                                              SkFloatToScalar(specular), SkFloatToScalar(radius));
        SkMaskFilter* filter =  SkBlurMaskFilter::CreateEmboss(direction,
                                                      SkFloatToScalar(ambient),
                                                      SkFloatToScalar(specular),
                                                      SkFloatToScalar(radius));
        ThrowIAE_IfNull(env, filter);
        return filter;
    }
};

+9 −11
Original line number Diff line number Diff line
@@ -43,20 +43,17 @@ static int Color_HSVToColor(JNIEnv* env, jobject, int alpha, jfloatArray hsvArra

static void Shader_destructor(JNIEnv* env, jobject, SkShader* shader)
{
    SkASSERT(shader != NULL);
    shader->unref();
    SkSafeUnref(shader);
}

static bool Shader_getLocalMatrix(JNIEnv* env, jobject, const SkShader* shader, SkMatrix* matrix)
{
    SkASSERT(shader != NULL);    
    return shader->getLocalMatrix(matrix);
    return shader ? shader->getLocalMatrix(matrix) : false;
}
 
static void Shader_setLocalMatrix(JNIEnv* env, jobject, SkShader* shader, const SkMatrix* matrix)
{
    SkASSERT(shader != NULL);
    
    if (shader) {
        if (NULL == matrix) {
            shader->resetLocalMatrix();
        }
@@ -64,6 +61,7 @@ static void Shader_setLocalMatrix(JNIEnv* env, jobject, SkShader* shader, const
            shader->setLocalMatrix(*matrix);
        }
    }
}

///////////////////////////////////////////////////////////////////////////////////////////////