summaryrefslogtreecommitdiff
path: root/media/jni
diff options
context:
space:
mode:
authorPierre Couillaud <pierre@broadcom.com>2021-03-12 13:50:04 -0800
committerHenry Fang <quxiangfang@google.com>2021-03-16 15:45:45 +0000
commitee14d5ea423f205a5add8b01f1ee87c4fa1d8b8a (patch)
treef3dded706b84f000819022e438222794b10ddce0 /media/jni
parent0ebddf5fdc52dc571acb0fc7c0a6e3ed8e90d46d (diff)
Tuner FW: clean up Dvr/Filter message-queue resources upon close
Bug: 182546718 Signed-off-by: Pierre Couillaud <pierre@broadcom.com> Change-Id: I89374a334e86dd934a972989c318b5222f4ce769 Merged-In: Iea28f07a0800cbab88a1348fa7ae21ac17e1cfd8
Diffstat (limited to 'media/jni')
-rw-r--r--media/jni/android_media_tv_Tuner.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp
index 694b93919cde..3976086ea495 100644
--- a/media/jni/android_media_tv_Tuner.cpp
+++ b/media/jni/android_media_tv_Tuner.cpp
@@ -287,7 +287,10 @@ Dvr::~Dvr() {
jint Dvr::close() {
Result r = mDvrSp->close();
if (r == Result::SUCCESS) {
- EventFlag::deleteEventFlag(&mDvrMQEventFlag);
+ if (mDvrMQEventFlag != nullptr) {
+ EventFlag::deleteEventFlag(&mDvrMQEventFlag);
+ }
+ mDvrMQ = nullptr;
}
return (jint) r;
}
@@ -723,13 +726,15 @@ Filter::~Filter() {
env->DeleteWeakGlobalRef(mFilterObj);
mFilterObj = NULL;
- EventFlag::deleteEventFlag(&mFilterMQEventFlag);
}
int Filter::close() {
Result r = mFilterSp->close();
if (r == Result::SUCCESS) {
- EventFlag::deleteEventFlag(&mFilterMQEventFlag);
+ if (mFilterMQEventFlag != nullptr) {
+ EventFlag::deleteEventFlag(&mFilterMQEventFlag);
+ }
+ mFilterMQ = nullptr;
}
return (int)r;
}
@@ -3050,6 +3055,9 @@ static jint android_media_tv_Tuner_configure_filter(
filterSp->mFilterMQ = std::make_unique<MQ>(filterMQDesc, true);
EventFlag::createEventFlag(
filterSp->mFilterMQ->getEventFlagWord(), &(filterSp->mFilterMQEventFlag));
+ } else {
+ filterSp->mFilterMQ = nullptr;
+ filterSp->mFilterMQEventFlag = nullptr;
}
}
return (jint) getQueueDescResult;
@@ -3137,13 +3145,12 @@ static jint android_media_tv_Tuner_read_filter_fmq(
}
static jint android_media_tv_Tuner_close_filter(JNIEnv *env, jobject filter) {
- sp<IFilter> iFilterSp = getFilter(env, filter)->getIFilter();
- if (iFilterSp == NULL) {
+ sp<Filter> filterSp = getFilter(env, filter);
+ if (filterSp == NULL) {
ALOGD("Failed to close filter: filter not found");
return (jint) Result::NOT_INITIALIZED;
}
- Result r = iFilterSp->close();
- return (jint) r;
+ return filterSp->close();
}
static sp<TimeFilter> getTimeFilter(JNIEnv *env, jobject filter) {