Merge "Tuner FW: clean up Dvr/Filter message-queue resources upon close" am: e42498a501
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1634480 Change-Id: I78dc795490b8df139cda241be12fcbbbaf2fbb3b
This commit is contained in:
@@ -287,7 +287,10 @@ Dvr::~Dvr() {
|
|||||||
jint Dvr::close() {
|
jint Dvr::close() {
|
||||||
Result r = mDvrSp->close();
|
Result r = mDvrSp->close();
|
||||||
if (r == Result::SUCCESS) {
|
if (r == Result::SUCCESS) {
|
||||||
EventFlag::deleteEventFlag(&mDvrMQEventFlag);
|
if (mDvrMQEventFlag != nullptr) {
|
||||||
|
EventFlag::deleteEventFlag(&mDvrMQEventFlag);
|
||||||
|
}
|
||||||
|
mDvrMQ = nullptr;
|
||||||
}
|
}
|
||||||
return (jint) r;
|
return (jint) r;
|
||||||
}
|
}
|
||||||
@@ -723,13 +726,15 @@ Filter::~Filter() {
|
|||||||
|
|
||||||
env->DeleteWeakGlobalRef(mFilterObj);
|
env->DeleteWeakGlobalRef(mFilterObj);
|
||||||
mFilterObj = NULL;
|
mFilterObj = NULL;
|
||||||
EventFlag::deleteEventFlag(&mFilterMQEventFlag);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int Filter::close() {
|
int Filter::close() {
|
||||||
Result r = mFilterSp->close();
|
Result r = mFilterSp->close();
|
||||||
if (r == Result::SUCCESS) {
|
if (r == Result::SUCCESS) {
|
||||||
EventFlag::deleteEventFlag(&mFilterMQEventFlag);
|
if (mFilterMQEventFlag != nullptr) {
|
||||||
|
EventFlag::deleteEventFlag(&mFilterMQEventFlag);
|
||||||
|
}
|
||||||
|
mFilterMQ = nullptr;
|
||||||
}
|
}
|
||||||
return (int)r;
|
return (int)r;
|
||||||
}
|
}
|
||||||
@@ -3050,6 +3055,9 @@ static jint android_media_tv_Tuner_configure_filter(
|
|||||||
filterSp->mFilterMQ = std::make_unique<MQ>(filterMQDesc, true);
|
filterSp->mFilterMQ = std::make_unique<MQ>(filterMQDesc, true);
|
||||||
EventFlag::createEventFlag(
|
EventFlag::createEventFlag(
|
||||||
filterSp->mFilterMQ->getEventFlagWord(), &(filterSp->mFilterMQEventFlag));
|
filterSp->mFilterMQ->getEventFlagWord(), &(filterSp->mFilterMQEventFlag));
|
||||||
|
} else {
|
||||||
|
filterSp->mFilterMQ = nullptr;
|
||||||
|
filterSp->mFilterMQEventFlag = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (jint) getQueueDescResult;
|
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) {
|
static jint android_media_tv_Tuner_close_filter(JNIEnv *env, jobject filter) {
|
||||||
sp<IFilter> iFilterSp = getFilter(env, filter)->getIFilter();
|
sp<Filter> filterSp = getFilter(env, filter);
|
||||||
if (iFilterSp == NULL) {
|
if (filterSp == NULL) {
|
||||||
ALOGD("Failed to close filter: filter not found");
|
ALOGD("Failed to close filter: filter not found");
|
||||||
return (jint) Result::NOT_INITIALIZED;
|
return (jint) Result::NOT_INITIALIZED;
|
||||||
}
|
}
|
||||||
Result r = iFilterSp->close();
|
return filterSp->close();
|
||||||
return (jint) r;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static sp<TimeFilter> getTimeFilter(JNIEnv *env, jobject filter) {
|
static sp<TimeFilter> getTimeFilter(JNIEnv *env, jobject filter) {
|
||||||
|
|||||||
Reference in New Issue
Block a user