summaryrefslogtreecommitdiff
path: root/media
diff options
context:
space:
mode:
authorHenry Fang <quxiangfang@google.com>2021-07-08 14:31:03 -0700
committerHenry Fang <quxiangfang@google.com>2021-07-08 19:56:26 -0700
commitf3e53d082c1ea71dd2778c1ff98e9252f70bdd8c (patch)
tree952af043177cabbac56019d47479d2311c4c0404 /media
parent14fe934578135a1b9a5f42e3ade65b15f7155839 (diff)
fix memory leak in initilization and finalization
bug: 193107250 Test: Manual Change-Id: I5b57ee6467d39765fab15d7a2b4b8e7c09ad8f3a
Diffstat (limited to 'media')
-rw-r--r--media/jni/android_media_tv_Tuner.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp
index 657c9eff1034..3cf9b0370823 100644
--- a/media/jni/android_media_tv_Tuner.cpp
+++ b/media/jni/android_media_tv_Tuner.cpp
@@ -339,6 +339,12 @@ MediaEvent::~MediaEvent() {
if (pC2Buffer != NULL) {
pC2Buffer->unregisterOnDestroyNotify(&DestroyCallback, this);
}
+
+ if (mLinearBlockObj != NULL) {
+ env->DeleteWeakGlobalRef(mLinearBlockObj);
+ mLinearBlockObj = NULL;
+ }
+
mFilterClient = NULL;
}
@@ -2450,7 +2456,10 @@ static sp<JTuner> setTuner(JNIEnv *env, jobject thiz, const sp<JTuner> &tuner) {
if (old != NULL) {
old->decStrong(thiz);
}
- env->SetLongField(thiz, gFields.tunerContext, (jlong)tuner.get());
+
+ if (tuner != NULL) {
+ env->SetLongField(thiz, gFields.tunerContext, (jlong)tuner.get());
+ }
return old;
}
@@ -4042,6 +4051,7 @@ static jint android_media_tv_Tuner_open_demux(JNIEnv* env, jobject thiz, jint ha
static jint android_media_tv_Tuner_close_tuner(JNIEnv* env, jobject thiz) {
sp<JTuner> tuner = getTuner(env, thiz);
+ setTuner(env, thiz, NULL);
return (jint) tuner->close();
}