Ticket #13269: 13269-eit-debug2.patch

File 13269-eit-debug2.patch, 8.3 KB (added by gigem, 6 years ago)
  • mythtv/libs/libmythtv/eitscanner.cpp

    diff --git a/mythtv/libs/libmythtv/eitscanner.cpp b/mythtv/libs/libmythtv/eitscanner.cpp
    index 3a67c6d760..0cc8ce5fd1 100644
    a b EITScanner::EITScanner(uint _cardnum) 
    3535      exitThread(false),
    3636      rec(NULL),                  activeScan(false),
    3737      activeScanStopped(true),    activeScanTrigTime(0),
     38      activeScanNextChanIndex(INT_MAX),
    3839      cardnum(_cardnum)
    3940{
    4041    QStringList langPref = iso639_get_language_list();
    void EITScanner::run(void) 
    128129            }
    129130
    130131            if (activeScanNextChan == activeScanChannels.end())
     132            {
    131133                activeScanNextChan = activeScanChannels.begin();
     134                activeScanNextChanIndex = 0;
     135                LOG(VB_EIT, LOG_INFO,
     136                    LOC_ID + QString("##EITScanner::run1 %1 of %2")
     137                    .arg(activeScanNextChanIndex)
     138                    .arg(activeScanChannels.size()));
     139            }
    132140
    133141            if (!(*activeScanNextChan).isEmpty())
    134142            {
    void EITScanner::run(void) 
    147155            activeScanNextTrig = MythDate::current()
    148156                .addSecs(activeScanTrigTime);
    149157            ++activeScanNextChan;
     158            if (activeScanChannels.size())
     159            {
     160                activeScanNextChanIndex =
     161                    (activeScanNextChanIndex+1) % activeScanChannels.size();
     162                LOG(VB_EIT, LOG_INFO,
     163                    LOC_ID + QString("##EITScanner::run2 %1 of %2")
     164                    .arg(activeScanNextChanIndex)
     165                    .arg(activeScanChannels.size()));
     166            }
    150167
    151168            // 24 hours ago
    152169#if QT_VERSION < QT_VERSION_CHECK(5,8,0)
    void EITScanner::StartActiveScan(TVRec *_rec, uint max_seconds_per_source) 
    272289    // order when the backend is first started up.
    273290    if (activeScanChannels.size())
    274291    {
    275         uint randomStart = random() % activeScanChannels.size();
    276         activeScanNextChan = activeScanChannels.begin()+randomStart;
     292        // Start on a random channel the first time.  For all
     293        // subsequent times, start on the next channel.  This makes
     294        // sure the immediately following channels get scanned in a
     295        // timely manner if we keep erroring out on the previous
     296        // channel.
     297        if (activeScanNextChanIndex >= (uint)activeScanChannels.size())
     298            activeScanNextChanIndex = random();
     299        else
     300            activeScanNextChanIndex += 1;
     301        activeScanNextChanIndex =
     302            activeScanNextChanIndex % activeScanChannels.size();
     303        activeScanNextChan =
     304            activeScanChannels.begin() + activeScanNextChanIndex;
     305        LOG(VB_EIT, LOG_INFO,
     306            LOC_ID + QString("##EITScanner::StartActiveScan1 %1 of %2")
     307            .arg(activeScanNextChanIndex)
     308            .arg(activeScanChannels.size()));
    277309
    278310        activeScanNextTrig = MythDate::current();
    279311        activeScanTrigTime = max_seconds_per_source;
  • mythtv/libs/libmythtv/eitscanner.h

    diff --git a/mythtv/libs/libmythtv/eitscanner.h b/mythtv/libs/libmythtv/eitscanner.h
    index 9d604021aa..e8853f7b75 100644
    a b class EITScanner : public QRunnable 
    6565    uint             activeScanTrigTime;
    6666    QStringList      activeScanChannels;
    6767    QStringList::iterator activeScanNextChan;
     68    uint             activeScanNextChanIndex;
    6869
    6970    uint             cardnum;
    7071
  • mythtv/libs/libmythtv/tv_rec.cpp

    diff --git a/mythtv/libs/libmythtv/tv_rec.cpp b/mythtv/libs/libmythtv/tv_rec.cpp
    index c6a9d71385..d8c25cb300 100644
    a b void TVRec::HandleStateChange(void) 
    10501050    {
    10511051        scanner->StopActiveScan();
    10521052        ClearFlags(kFlagEITScannerRunning, __FILE__, __LINE__);
     1053        eitScanStartTime = MythDate::current().addSecs(
     1054            eitCrawlIdleStart + eit_start_rand(eitTransportTimeout));
     1055        LOG(VB_CHANNEL, LOG_INFO,
     1056            LOC + QString("##TVRec::HandleStateChange0 %1")
     1057            .arg(eitScanStartTime.toString()));
    10531058    }
    10541059
    10551060    // Handle different state transitions
    void TVRec::HandleStateChange(void) 
    10911096    changeState = false;
    10921097
    10931098    eitScanStartTime = MythDate::current();
     1099    LOG(VB_CHANNEL, LOG_INFO,
     1100        LOC + QString("##TVRec::HandleStateChange1a %1")
     1101        .arg(eitScanStartTime.toString()));
    10941102    if (scanner && (internalState == kState_None))
    10951103    {
    10961104        eitScanStartTime = eitScanStartTime.addSecs(
    10971105            eitCrawlIdleStart + eit_start_rand(eitTransportTimeout));
     1106        LOG(VB_CHANNEL, LOG_INFO,
     1107            LOC + QString("##TVRec::HandleStateChange1b %1")
     1108            .arg(eitScanStartTime.toString()));
    10981109    }
    10991110    else
     1111    {
    11001112        eitScanStartTime = eitScanStartTime.addYears(1);
     1113        LOG(VB_CHANNEL, LOG_INFO,
     1114            LOC + QString("##TVRec::HandleStateChange1c %1")
     1115            .arg(eitScanStartTime.toString()));
     1116    }
    11011117}
    11021118#undef TRANSITION
    11031119#undef SET_NEXT
    void TVRec::run(void) 
    12931309    ClearFlags(kFlagExitPlayer | kFlagFinishRecording, __FILE__, __LINE__);
    12941310
    12951311    eitScanStartTime = MythDate::current();
     1312    LOG(VB_CHANNEL, LOG_INFO,
     1313        LOC + QString("##TVRec::run1a %1")
     1314        .arg(eitScanStartTime.toString()));
    12961315    // check whether we should use the EITScanner in this TVRec instance
    12971316    if (CardUtil::IsEITCapable(genOpt.inputtype) &&
    12981317        (!GetDTVChannel() || GetDTVChannel()->IsMaster()) &&
    void TVRec::run(void) 
    13011320        scanner = new EITScanner(inputid);
    13021321        eitScanStartTime = eitScanStartTime.addSecs(
    13031322            eitCrawlIdleStart + eit_start_rand(eitTransportTimeout));
     1323        LOG(VB_CHANNEL, LOG_INFO,
     1324            LOC + QString("##TVRec::run1b %1")
     1325            .arg(eitScanStartTime.toString()));
    13041326    }
    13051327    else
     1328    {
    13061329        eitScanStartTime = eitScanStartTime.addYears(1);
     1330        LOG(VB_CHANNEL, LOG_INFO,
     1331            LOC + QString("##TVRec::run1c %1")
     1332            .arg(eitScanStartTime.toString()));
     1333    }
    13071334
    13081335    while (HasFlags(kFlagRunMainLoop))
    13091336    {
    void TVRec::run(void) 
    14501477                LOG(VB_EIT, LOG_INFO, LOC +
    14511478                    "EIT scanning disabled for this input.");
    14521479                eitScanStartTime = eitScanStartTime.addYears(1);
     1480                LOG(VB_CHANNEL, LOG_INFO,
     1481                    LOC + QString("##TVRec::run2a %1")
     1482                    .arg(eitScanStartTime.toString()));
    14531483            }
    14541484            else if (!get_use_eit(GetInputId()))
    14551485            {
    14561486                LOG(VB_EIT, LOG_INFO, LOC +
    14571487                    "EIT scanning disabled for all sources on this input.");
    14581488                eitScanStartTime = eitScanStartTime.addYears(1);
     1489                LOG(VB_CHANNEL, LOG_INFO,
     1490                    LOC + QString("##TVRec::run2b %1")
     1491                    .arg(eitScanStartTime.toString()));
    14591492            }
    14601493            else
    14611494            {
    void TVRec::run(void) 
    14751508                    SetFlags(kFlagEITScannerRunning, __FILE__, __LINE__);
    14761509                    eitScanStartTime =
    14771510                        QDateTime::currentDateTime().addYears(1);
     1511                    LOG(VB_CHANNEL, LOG_INFO,
     1512                        LOC + QString("##TVRec::run3a %1")
     1513                        .arg(eitScanStartTime.toString()));
    14781514                }
    14791515                else
    14801516                {
    void TVRec::run(void) 
    14831519                            "because input %2 is busy")
    14841520                        .arg(inputid).arg(busy_input.inputid));
    14851521                    eitScanStartTime = eitScanStartTime.addSecs(300);
     1522                    LOG(VB_CHANNEL, LOG_INFO,
     1523                        LOC + QString("##TVRec::run3b %1")
     1524                        .arg(eitScanStartTime.toString()));
    14861525                }
    14871526                inputsLock.unlock();
    14881527            }
    void TVRec::TuningShutdowns(const TuningRequest &request) 
    35903629    {
    35913630        scanner->StopActiveScan();
    35923631        ClearFlags(kFlagEITScannerRunning, __FILE__, __LINE__);
     3632        eitScanStartTime = MythDate::current().addSecs(
     3633            eitCrawlIdleStart + eit_start_rand(eitTransportTimeout));
     3634        LOG(VB_CHANNEL, LOG_INFO,
     3635            LOC + QString("##TVRec::TVRec::TuningShutdowns1 %1")
     3636            .arg(eitScanStartTime.toString()));
    35933637    }
    35943638
    35953639    if (scanner && !request.IsOnSameMultiplex())