Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e42498a5 authored by Henry Fang's avatar Henry Fang Committed by Gerrit Code Review
Browse files

Merge "Tuner FW: clean up Dvr/Filter message-queue resources upon close"

parents 62d82e0b ee14d5ea
Loading
Loading
Loading
Loading
+14 −7
Original line number Diff line number Diff line
@@ -287,8 +287,11 @@ Dvr::~Dvr() {
jint Dvr::close() {
    Result r = mDvrSp->close();
    if (r == Result::SUCCESS) {
        if (mDvrMQEventFlag != nullptr) {
            EventFlag::deleteEventFlag(&mDvrMQEventFlag);
        }
        mDvrMQ = nullptr;
    }
    return (jint) r;
}

@@ -723,14 +726,16 @@ Filter::~Filter() {

    env->DeleteWeakGlobalRef(mFilterObj);
    mFilterObj = NULL;
    EventFlag::deleteEventFlag(&mFilterMQEventFlag);
}

int Filter::close() {
    Result r = mFilterSp->close();
    if (r == Result::SUCCESS) {
        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) {