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

Commit 6d5e103f authored by Hongguang Chen's avatar Hongguang Chen Committed by Android (Google) Code Review
Browse files

Merge "Fix Tuner CTS test deadlock issue" into main

parents ed4f72d4 6a7420fd
Loading
Loading
Loading
Loading
+23 −9
Original line number Diff line number Diff line
@@ -335,26 +335,40 @@ shared_ptr<IFilter> TunerFilter::getHalFilter() {

/////////////// FilterCallback ///////////////////////
::ndk::ScopedAStatus TunerFilter::FilterCallback::onFilterStatus(DemuxFilterStatus status) {
    shared_ptr<ITunerFilterCallback> cb(nullptr);
    {
        Mutex::Autolock _l(mCallbackLock);
    if (mTunerFilterCallback != nullptr) {
        mTunerFilterCallback->onFilterStatus(status);
        cb = mTunerFilterCallback;
    }
    if (cb != nullptr) {
        cb->onFilterStatus(status);
    }
    return ::ndk::ScopedAStatus::ok();
}

::ndk::ScopedAStatus TunerFilter::FilterCallback::onFilterEvent(
        const vector<DemuxFilterEvent>& events) {
    shared_ptr<ITunerFilterCallback> cb(nullptr);
    {
        Mutex::Autolock _l(mCallbackLock);
    if (mTunerFilterCallback != nullptr) {
        mTunerFilterCallback->onFilterEvent(events);
        cb = mTunerFilterCallback;
    }
    if (cb != nullptr) {
        cb->onFilterEvent(events);
    }
    return ::ndk::ScopedAStatus::ok();
}

void TunerFilter::FilterCallback::sendSharedFilterStatus(int32_t status) {
    shared_ptr<ITunerFilterCallback> cb(nullptr);
    shared_ptr<ITunerFilterCallback> orig_cb(nullptr);
    {
        Mutex::Autolock _l(mCallbackLock);
    if (mTunerFilterCallback != nullptr && mOriginalCallback != nullptr) {
        mTunerFilterCallback->onFilterStatus(static_cast<DemuxFilterStatus>(status));
        cb = mTunerFilterCallback;
        orig_cb = mOriginalCallback;
    }
    if (cb != nullptr && orig_cb != nullptr) {
        cb->onFilterStatus(static_cast<DemuxFilterStatus>(status));
    }
}