diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2015-03-28 15:48:28 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2015-04-11 19:37:34 +0200 |
commit | 7fb0fafed2a5f2c48ad183683a8aa39e2b61d4b9 (patch) | |
tree | 48c2b68d516e8ff2b2d97178702d7522cd67b78b /sys | |
parent | 6c7b64f90c67dcc200b0897c5e4f95044586066d (diff) | |
download | gstreamer-plugins-bad-7fb0fafed2a5f2c48ad183683a8aa39e2b61d4b9.tar.gz |
amc: Allow creating global and local references of objects
Diffstat (limited to 'sys')
-rw-r--r-- | sys/androidmedia/gstjniutils.c | 31 | ||||
-rw-r--r-- | sys/androidmedia/gstjniutils.h | 3 |
2 files changed, 23 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 * diff --git a/sys/androidmedia/gstjniutils.h b/sys/androidmedia/gstjniutils.h index f3736db54..0b25daa7f 100644 --- a/sys/androidmedia/gstjniutils.h +++ b/sys/androidmedia/gstjniutils.h @@ -59,12 +59,14 @@ jfieldID gst_amc_jni_get_static_field_id (JNIEnv * env, jobject gst_amc_jni_new_object (JNIEnv * env, GError ** err, + gboolean global, jclass klass, jmethodID constructor, ...); jobject gst_amc_jni_new_object_from_static (JNIEnv * env, GError ** err, + gboolean global, jclass klass, jmethodID constructor, ...); @@ -87,6 +89,7 @@ gchar *gst_amc_jni_string_to_gchar (JNIEnv * env, jstring gst_amc_jni_string_from_gchar (JNIEnv * env, GError ** error, + gboolean global, const gchar * string); G_GNUC_PRINTF (5, 6) |