Merge "Fix static analyzer warnings."
am: 9c69c41b95
Change-Id: I62b951aa16a714343f155fa3af86f58933212ebb
This commit is contained in:
@@ -63,7 +63,8 @@ class NativeWindowHandle : public WindowHandle {
|
||||
};
|
||||
|
||||
jboolean Java_android_filterfw_core_GLEnvironment_nativeAllocate(JNIEnv* env, jobject thiz) {
|
||||
return ToJBool(WrapObjectInJava(new GLEnv(), env, thiz, true));
|
||||
std::unique_ptr<GLEnv> glEnv(new GLEnv());
|
||||
return ToJBool(WrapOwnedObjectInJava(std::move(glEnv), env, thiz, true));
|
||||
}
|
||||
|
||||
jboolean Java_android_filterfw_core_GLEnvironment_nativeDeallocate(JNIEnv* env, jobject thiz) {
|
||||
|
||||
@@ -48,13 +48,11 @@ jboolean Java_android_filterfw_core_GLFrame_nativeAllocate(JNIEnv* env,
|
||||
jint height) {
|
||||
GLEnv* gl_env_ptr = ConvertFromJava<GLEnv>(env, gl_env);
|
||||
if (!gl_env_ptr) return JNI_FALSE;
|
||||
GLFrame* frame = new GLFrame(gl_env_ptr);
|
||||
std::unique_ptr<GLFrame> frame(new GLFrame(gl_env_ptr));
|
||||
if (frame->Init(width, height)) {
|
||||
return ToJBool(WrapObjectInJava(frame, env, thiz, true));
|
||||
} else {
|
||||
delete frame;
|
||||
return JNI_FALSE;
|
||||
return ToJBool(WrapOwnedObjectInJava(std::move(frame), env, thiz, true));
|
||||
}
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
jboolean Java_android_filterfw_core_GLFrame_nativeAllocateWithTexture(JNIEnv* env,
|
||||
@@ -65,13 +63,11 @@ jboolean Java_android_filterfw_core_GLFrame_nativeAllocateWithTexture(JNIEnv* en
|
||||
jint height) {
|
||||
GLEnv* gl_env_ptr = ConvertFromJava<GLEnv>(env, gl_env);
|
||||
if (!gl_env_ptr) return JNI_FALSE;
|
||||
GLFrame* frame = new GLFrame(gl_env_ptr);
|
||||
std::unique_ptr<GLFrame> frame(new GLFrame(gl_env_ptr));
|
||||
if (frame->InitWithTexture(tex_id, width, height)) {
|
||||
return ToJBool(WrapObjectInJava(frame, env, thiz, true));
|
||||
} else {
|
||||
delete frame;
|
||||
return JNI_FALSE;
|
||||
return ToJBool(WrapOwnedObjectInJava(std::move(frame), env, thiz, true));
|
||||
}
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
jboolean Java_android_filterfw_core_GLFrame_nativeAllocateWithFbo(JNIEnv* env,
|
||||
@@ -82,13 +78,11 @@ jboolean Java_android_filterfw_core_GLFrame_nativeAllocateWithFbo(JNIEnv* env,
|
||||
jint height) {
|
||||
GLEnv* gl_env_ptr = ConvertFromJava<GLEnv>(env, gl_env);
|
||||
if (!gl_env_ptr) return JNI_FALSE;
|
||||
GLFrame* frame = new GLFrame(gl_env_ptr);
|
||||
std::unique_ptr<GLFrame> frame(new GLFrame(gl_env_ptr));
|
||||
if (frame->InitWithFbo(fbo_id, width, height)) {
|
||||
return ToJBool(WrapObjectInJava(frame, env, thiz, true));
|
||||
} else {
|
||||
delete frame;
|
||||
return JNI_FALSE;
|
||||
return ToJBool(WrapOwnedObjectInJava(std::move(frame), env, thiz, true));
|
||||
}
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
jboolean Java_android_filterfw_core_GLFrame_nativeAllocateExternal(JNIEnv* env,
|
||||
@@ -96,13 +90,11 @@ jboolean Java_android_filterfw_core_GLFrame_nativeAllocateExternal(JNIEnv* env,
|
||||
jobject gl_env) {
|
||||
GLEnv* gl_env_ptr = ConvertFromJava<GLEnv>(env, gl_env);
|
||||
if (!gl_env_ptr) return JNI_FALSE;
|
||||
GLFrame* frame = new GLFrame(gl_env_ptr);
|
||||
std::unique_ptr<GLFrame> frame(new GLFrame(gl_env_ptr));
|
||||
if (frame->InitWithExternalTexture()) {
|
||||
return ToJBool(WrapObjectInJava(frame, env, thiz, true));
|
||||
} else {
|
||||
delete frame;
|
||||
return JNI_FALSE;
|
||||
return ToJBool(WrapOwnedObjectInJava(std::move(frame), env, thiz, true));
|
||||
}
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
jboolean Java_android_filterfw_core_GLFrame_nativeDeallocate(JNIEnv* env, jobject thiz) {
|
||||
|
||||
@@ -35,7 +35,8 @@ typedef union {
|
||||
jboolean Java_android_filterfw_core_NativeFrame_nativeAllocate(JNIEnv* env,
|
||||
jobject thiz,
|
||||
jint size) {
|
||||
return ToJBool(WrapObjectInJava(new NativeFrame(size), env, thiz, true));
|
||||
std::unique_ptr<NativeFrame> frame(new NativeFrame(size));
|
||||
return ToJBool(WrapOwnedObjectInJava(std::move(frame), env, thiz, true));
|
||||
}
|
||||
|
||||
jboolean Java_android_filterfw_core_NativeFrame_nativeDeallocate(JNIEnv* env, jobject thiz) {
|
||||
|
||||
@@ -28,7 +28,8 @@ using android::filterfw::NativeFrame;
|
||||
using android::filterfw::NativeProgram;
|
||||
|
||||
jboolean Java_android_filterfw_core_NativeProgram_allocate(JNIEnv* env, jobject thiz) {
|
||||
return ToJBool(WrapObjectInJava(new NativeProgram(), env, thiz, true));
|
||||
std::unique_ptr<NativeProgram> program(new NativeProgram());
|
||||
return ToJBool(WrapOwnedObjectInJava(std::move(program), env, thiz, true));
|
||||
}
|
||||
|
||||
jboolean Java_android_filterfw_core_NativeProgram_deallocate(JNIEnv* env, jobject thiz) {
|
||||
|
||||
@@ -46,21 +46,14 @@ jboolean Java_android_filterfw_core_ShaderProgram_allocate(JNIEnv* env,
|
||||
// Create the shader
|
||||
if (!fragment_shader || !gl_env_ptr)
|
||||
return false;
|
||||
else if (!vertex_shader)
|
||||
return ToJBool(WrapObjectInJava(new ShaderProgram(
|
||||
gl_env_ptr,
|
||||
ToCppString(env, fragment_shader)),
|
||||
env,
|
||||
thiz,
|
||||
true));
|
||||
|
||||
std::unique_ptr<ShaderProgram> shader;
|
||||
if (!vertex_shader)
|
||||
shader.reset(new ShaderProgram(gl_env_ptr, ToCppString(env, fragment_shader)));
|
||||
else
|
||||
return ToJBool(WrapObjectInJava(new ShaderProgram(
|
||||
gl_env_ptr,
|
||||
ToCppString(env, vertex_shader),
|
||||
ToCppString(env, fragment_shader)),
|
||||
env,
|
||||
thiz,
|
||||
true));
|
||||
shader.reset(new ShaderProgram(gl_env_ptr, ToCppString(env, vertex_shader),
|
||||
ToCppString(env, fragment_shader)));
|
||||
return ToJBool(WrapOwnedObjectInJava(std::move(shader), env, thiz, true));
|
||||
}
|
||||
|
||||
jboolean Java_android_filterfw_core_ShaderProgram_deallocate(JNIEnv* env, jobject thiz) {
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
#include <jni.h>
|
||||
|
||||
#include <memory>
|
||||
#include <unordered_map>
|
||||
#include <string>
|
||||
|
||||
@@ -214,6 +215,17 @@ bool WrapObjectInJava(T* c_object, JNIEnv* env, jobject j_object, bool owns) {
|
||||
return pool ? pool->WrapObject(c_object, env, j_object, owns) : false;
|
||||
}
|
||||
|
||||
// Calls WrapObjectInJava, safely freeing c_object if object creation fails.
|
||||
template<typename T>
|
||||
bool WrapOwnedObjectInJava(std::unique_ptr<T> c_object, JNIEnv* env,
|
||||
jobject j_object, bool owns) {
|
||||
if (!WrapObjectInJava<T>(c_object.get(), env, j_object, owns))
|
||||
return false;
|
||||
// If we succeeded, a Java object now owns our c object; don't free it.
|
||||
c_object.release();
|
||||
return true;
|
||||
}
|
||||
|
||||
// Creates a new Java instance, which wraps the passed C++ instance. Returns
|
||||
// the wrapped object or JNI_NULL if there was an error. Pass true to owns, if
|
||||
// the Java layer should own the object.
|
||||
|
||||
@@ -24,7 +24,8 @@ using android::filterfw::VertexFrame;
|
||||
jboolean Java_android_filterfw_core_VertexFrame_nativeAllocate(JNIEnv* env,
|
||||
jobject thiz,
|
||||
jint size) {
|
||||
return ToJBool(WrapObjectInJava(new VertexFrame(size), env, thiz, true));
|
||||
std::unique_ptr<VertexFrame> frame(new VertexFrame(size));
|
||||
return ToJBool(WrapOwnedObjectInJava(std::move(frame), env, thiz, true));
|
||||
}
|
||||
|
||||
jboolean Java_android_filterfw_core_VertexFrame_nativeDeallocate(JNIEnv* env, jobject thiz) {
|
||||
|
||||
Reference in New Issue
Block a user