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
This commit is contained in:
committed by
Henry Fang
parent
0ebddf5fdc
commit
ee14d5ea42
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user