diff --git a/tv/tuner/1.0/default/Frontend.cpp b/tv/tuner/1.0/default/Frontend.cpp index f42e592a58..8bf0ec5353 100644 --- a/tv/tuner/1.0/default/Frontend.cpp +++ b/tv/tuner/1.0/default/Frontend.cpp @@ -66,7 +66,7 @@ Return Frontend::tune(const FrontendSettings& /* settings */) { mTunerService->frontendStartTune(mId); mCallback->onEvent(FrontendEventType::LOCKED); - mIsLocked = false; + mIsLocked = true; return Result::SUCCESS; } @@ -272,6 +272,10 @@ bool Frontend::supportsSatellite() { return mType == FrontendType::DVBS || mType == FrontendType::ISDBS || mType == FrontendType::ISDBS3; } + +bool Frontend::isLocked() { + return mIsLocked; +} } // namespace implementation } // namespace V1_0 } // namespace tuner diff --git a/tv/tuner/1.0/default/Frontend.h b/tv/tuner/1.0/default/Frontend.h index c09b897eae..a529b74677 100644 --- a/tv/tuner/1.0/default/Frontend.h +++ b/tv/tuner/1.0/default/Frontend.h @@ -68,6 +68,8 @@ class Frontend : public IFrontend { string getSourceFile(); + bool isLocked(); + private: virtual ~Frontend(); bool supportsSatellite(); diff --git a/tv/tuner/1.0/default/Tuner.cpp b/tv/tuner/1.0/default/Tuner.cpp index ae8070c5f7..48ce384e7b 100644 --- a/tv/tuner/1.0/default/Tuner.cpp +++ b/tv/tuner/1.0/default/Tuner.cpp @@ -231,6 +231,9 @@ Return Tuner::openLnbByName(const hidl_string& /*lnbName*/, openLnbByName_ void Tuner::setFrontendAsDemuxSource(uint32_t frontendId, uint32_t demuxId) { mFrontendToDemux[frontendId] = demuxId; + if (mFrontends[frontendId] != nullptr && mFrontends[frontendId]->isLocked()) { + mDemuxes[demuxId]->startFrontendInputLoop(); + } } void Tuner::frontendStopTune(uint32_t frontendId) {