[Frontend] Fix lock fail for linked tuners.
authorhschang <chang@dev3>
Fri, 4 Mar 2016 02:17:54 +0000 (11:17 +0900)
committerhschang <chang@dev3>
Fri, 4 Mar 2016 05:22:35 +0000 (14:22 +0900)
lib/dvb/frontend.cpp
lib/dvb/sec.cpp

index 7b95149..fa36653 100755 (executable)
@@ -1878,12 +1878,14 @@ int eDVBFrontend::tuneLoopInt()  // called by m_tuneTimer
                tmp = prev->m_frontend->m_data[LINKED_PREV_PTR];
                if (tmp == -1 && sec_fe != this && !prev->m_inuse) {
                        int state = sec_fe->m_state;
+#if 0 // Since following code causes lock fail for linked tuners in certain conditions, it does not apply.
                        // workaround to put the kernel frontend thread into idle state!
                        if (state != eDVBFrontend::stateIdle && state != stateClosed)
                        {
                                sec_fe->closeFrontend(true);
                                state = sec_fe->m_state;
                        }
+#endif
                        // sec_fe is closed... we must reopen it here..
                        if (state == stateClosed)
                        {
index 878a835..2affc65 100644 (file)
@@ -340,6 +340,7 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
                                }
                                if (satposDependPtr != -1)  // we dont need uncommitted switch and rotor cmds on second output of a rotor lnb
                                        diseqc_mode = eDVBSatelliteDiseqcParameters::V1_0;
+#if 0 // Since following code causes lock fail for linked tuners in certain conditions, it does not apply.
                                else {
                                        // in eDVBFrontend::tuneLoop we call closeFrontend and ->inc_use() in this this condition (to put the kernel frontend thread into idle state)
                                        // so we must resend all diseqc stuff (voltage is disabled when the frontend is closed)
@@ -348,6 +349,7 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
                                        if (!linked_fe->m_inuse && state != eDVBFrontend::stateIdle)
                                                forceChanged = true;
                                }
+#endif
                        }
 
                        sec_fe->getData(eDVBFrontend::CSW, lastcsw);