Index: libs/libmythtv/tv_rec.cpp =================================================================== --- libs/libmythtv/tv_rec.cpp (revision 15263) +++ libs/libmythtv/tv_rec.cpp (working copy) @@ -1134,7 +1134,7 @@ return NULL; } -bool get_use_eit(uint cardid) +static bool get_use_eit(uint cardid) { MSqlQuery query(MSqlQuery::InitCon()); query.prepare( @@ -1174,6 +1174,25 @@ return false; } +static bool get_dvb_on_demand(uint cardid) +{ + MSqlQuery query(MSqlQuery::InitCon()); + query.prepare( + "SELECT dvb_on_demand " + "FROM capturecard " + "WHERE cardid = :CARDID"); + query.bindValue(":CARDID", cardid); + + if (!query.exec() || !query.isActive()) + { + MythContext::DBError("get_dvb_on_demand", query); + return false; + } + else if (query.next()) + return query.value(0).toBool(); + return false; +} + /** \fn TVRec::RunTV(void) * \brief Event handling method, contains event loop. */ @@ -1347,6 +1366,12 @@ "for all sources on this card."); eitScanStartTime = eitScanStartTime.addYears(1); } + else if (get_dvb_on_demand(GetCaptureCardNum())) + { + VERBOSE(VB_EIT, LOC + "EIT scanning disabled " + "since the card should be used only on demand."); + eitScanStartTime = eitScanStartTime.addYears(1); + } else { scanner->StartActiveScan( Index: libs/libmythtv/eitscanner.cpp =================================================================== --- libs/libmythtv/eitscanner.cpp (revision 15263) +++ libs/libmythtv/eitscanner.cpp (working copy) @@ -127,7 +127,10 @@ } if (activeScanNextChan == activeScanChannels.end()) - activeScanNextChan = activeScanChannels.begin(); + { + exitThread = true; + break; + } if (!(*activeScanNextChan).isEmpty()) {