[vlc-commits] mediacodec: fix LocalRef leaks

2018-01-05 Thread Zhao Zhili
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

2018-01-05 Thread Zhao Zhili
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

2015-04-28 Thread Thomas Guillem
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