Merge change 9159 into donut
* changes: 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.
This commit is contained in:
@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -43,25 +43,23 @@ 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 (NULL == matrix) {
|
||||
shader->resetLocalMatrix();
|
||||
}
|
||||
else {
|
||||
shader->setLocalMatrix(*matrix);
|
||||
if (shader) {
|
||||
if (NULL == matrix) {
|
||||
shader->resetLocalMatrix();
|
||||
}
|
||||
else {
|
||||
shader->setLocalMatrix(*matrix);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user