summaryrefslogtreecommitdiff
path: root/sys/androidmedia/gstjniutils.c
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2015-03-28 15:48:28 +0100
committerSebastian Dröge <sebastian@centricular.com>2015-04-11 19:37:34 +0200
commit7fb0fafed2a5f2c48ad183683a8aa39e2b61d4b9 (patch)
tree48c2b68d516e8ff2b2d97178702d7522cd67b78b /sys/androidmedia/gstjniutils.c
parent6c7b64f90c67dcc200b0897c5e4f95044586066d (diff)
downloadgstreamer-plugins-bad-7fb0fafed2a5f2c48ad183683a8aa39e2b61d4b9.tar.gz
amc: Allow creating global and local references of objects
Diffstat (limited to 'sys/androidmedia/gstjniutils.c')
-rw-r--r--sys/androidmedia/gstjniutils.c31
1 files changed, 20 insertions, 11 deletions
diff --git a/sys/androidmedia/gstjniutils.c b/sys/androidmedia/gstjniutils.c
index 3f32dc364..02bc3a821 100644
--- a/sys/androidmedia/gstjniutils.c
+++ b/sys/androidmedia/gstjniutils.c
@@ -128,8 +128,8 @@ gst_amc_jni_get_static_field_id (JNIEnv * env, GError ** err, jclass klass,
}
jobject
-gst_amc_jni_new_object (JNIEnv * env, GError ** err, jclass klass,
- jmethodID constructor, ...)
+gst_amc_jni_new_object (JNIEnv * env, GError ** err, gboolean global,
+ jclass klass, jmethodID constructor, ...)
{
jobject tmp;
va_list args;
@@ -144,12 +144,15 @@ gst_amc_jni_new_object (JNIEnv * env, GError ** err, jclass klass,
return NULL;
}
- return gst_amc_jni_object_make_global (env, tmp);
+ if (global)
+ return gst_amc_jni_object_make_global (env, tmp);
+ else
+ return tmp;
}
jobject
-gst_amc_jni_new_object_from_static (JNIEnv * env, GError ** err, jclass klass,
- jmethodID method, ...)
+gst_amc_jni_new_object_from_static (JNIEnv * env, GError ** err,
+ gboolean global, jclass klass, jmethodID method, ...)
{
jobject tmp;
va_list args;
@@ -164,7 +167,10 @@ gst_amc_jni_new_object_from_static (JNIEnv * env, GError ** err, jclass klass,
return NULL;
}
- return gst_amc_jni_object_make_global (env, tmp);
+ if (global)
+ return gst_amc_jni_object_make_global (env, tmp);
+ else
+ return tmp;
}
jobject
@@ -207,18 +213,21 @@ gst_amc_jni_object_local_unref (JNIEnv * env, jobject object)
jstring
gst_amc_jni_string_from_gchar (JNIEnv * env, GError ** err,
- const gchar * string)
+ gboolean global, const gchar * string)
{
- jstring ret;
+ jstring tmp;
- ret = (*env)->NewStringUTF (env, string);
+ tmp = (*env)->NewStringUTF (env, string);
if ((*env)->ExceptionCheck (env)) {
gst_amc_jni_set_error (env, err, GST_LIBRARY_ERROR,
GST_LIBRARY_ERROR_FAILED, "Failed to call Java method");
- ret = NULL;
+ tmp = NULL;
}
- return ret;
+ if (global)
+ return gst_amc_jni_object_make_global (env, tmp);
+ else
+ return tmp;
}
gchar *