[vlc-commits] mediacodec: fix LocalRef leaks
vlc/vlc-3.0 | branch: master | Zhao Zhili| Fri Jan 5 16:56:59 2018 +0800| [8af36b302d1f965848117c21fc944cccaa64e6fd] | committer: Thomas Guillem mediacodec: fix LocalRef leaks Signed-off-by: Thomas Guillem (cherry picked from commit 6ef171c102bd61f62aa0593a39873d3aa6975fa3) Signed-off-by: Thomas Guillem > http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=8af36b302d1f965848117c21fc944cccaa64e6fd --- modules/codec/omxil/mediacodec_jni.c | 9 - 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/codec/omxil/mediacodec_jni.c b/modules/codec/omxil/mediacodec_jni.c index 9752193dcd..ddf4f785ca 100644 --- a/modules/codec/omxil/mediacodec_jni.c +++ b/modules/codec/omxil/mediacodec_jni.c @@ -237,13 +237,18 @@ InitJNIFields (vlc_object_t *p_obj, JNIEnv *env) } *(jclass*)((uint8_t*) + classes[i].offset) = (jclass) (*env)->NewGlobalRef(env, clazz); +(*env)->DeleteLocalRef(env, clazz); } -jclass last_class; +jclass last_class = NULL; for (int i = 0; members[i].name; i++) { if (i == 0 || strcmp(members[i].class, members[i - 1].class)) +{ +if (last_class != NULL) +(*env)->DeleteLocalRef(env, last_class); last_class = (*env)->FindClass(env, members[i].class); +} if (CHECK_EXCEPTION()) { @@ -273,6 +278,8 @@ InitJNIFields (vlc_object_t *p_obj, JNIEnv *env) goto end; } } +if (last_class != NULL) +(*env)->DeleteLocalRef(env, last_class); /* getInputBuffers and getOutputBuffers are deprecated if API >= 21 * use getInputBuffer and getOutputBuffer instead. */ if (jfields.get_input_buffer && jfields.get_output_buffer) ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] mediacodec: fix LocalRef leaks
vlc | branch: master | Zhao Zhili| Fri Jan 5 16:56:59 2018 +0800| [6ef171c102bd61f62aa0593a39873d3aa6975fa3] | committer: Thomas Guillem mediacodec: fix LocalRef leaks Signed-off-by: Thomas Guillem > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6ef171c102bd61f62aa0593a39873d3aa6975fa3 --- modules/codec/omxil/mediacodec_jni.c | 9 - 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/codec/omxil/mediacodec_jni.c b/modules/codec/omxil/mediacodec_jni.c index 9752193dcd..ddf4f785ca 100644 --- a/modules/codec/omxil/mediacodec_jni.c +++ b/modules/codec/omxil/mediacodec_jni.c @@ -237,13 +237,18 @@ InitJNIFields (vlc_object_t *p_obj, JNIEnv *env) } *(jclass*)((uint8_t*) + classes[i].offset) = (jclass) (*env)->NewGlobalRef(env, clazz); +(*env)->DeleteLocalRef(env, clazz); } -jclass last_class; +jclass last_class = NULL; for (int i = 0; members[i].name; i++) { if (i == 0 || strcmp(members[i].class, members[i - 1].class)) +{ +if (last_class != NULL) +(*env)->DeleteLocalRef(env, last_class); last_class = (*env)->FindClass(env, members[i].class); +} if (CHECK_EXCEPTION()) { @@ -273,6 +278,8 @@ InitJNIFields (vlc_object_t *p_obj, JNIEnv *env) goto end; } } +if (last_class != NULL) +(*env)->DeleteLocalRef(env, last_class); /* getInputBuffers and getOutputBuffers are deprecated if API >= 21 * use getInputBuffer and getOutputBuffer instead. */ if (jfields.get_input_buffer && jfields.get_output_buffer) ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] mediacodec: fix LocalRef leaks
vlc | branch: master | Thomas Guillem tho...@gllm.fr | Mon Apr 27 11:45:46 2015 +0200| [d5248dbb0c3f38f56099c18ca065b16c0650efb9] | committer: Thomas Guillem mediacodec: fix LocalRef leaks Now that we can open and close MediaCodec from the same thread, we can reach quickly the limit of 512 LocalRefs. http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d5248dbb0c3f38f56099c18ca065b16c0650efb9 --- modules/codec/omxil/android_mediacodec.c | 150 +- 1 file changed, 106 insertions(+), 44 deletions(-) Diff: http://git.videolan.org/gitweb.cgi/vlc.git/?a=commitdiff;h=d5248dbb0c3f38f56099c18ca065b16c0650efb9 ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits