diff options
Diffstat (limited to 'media/jni/android_media_tv_Tuner.cpp')
-rw-r--r-- | media/jni/android_media_tv_Tuner.cpp | 12 |
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(); } |