Ticket #2699: t2699_2.diff

File t2699_2.diff, 2.9 KB (added by Janne Grunau, 17 years ago)

avoid duplicate messages by remembering the CRC of the PAT

  • libs/libmythtv/dtvsignalmonitor.cpp

    old new  
    4444      networkID(0), transportID(0),
    4545      detectedNetworkID(0), detectedTransportID(0),
    4646      programNumber(-1),
     47      last_pat_crc(-1),
    4748      error("")
    4849{
    4950}
     
    185186void DTVSignalMonitor::SetChannel(int major, int minor)
    186187{
    187188    DBG_SM(QString("SetChannel(%1, %2)").arg(major).arg(minor), "");
     189    last_pat_crc = -1;
    188190    if (GetATSCStreamData() && (majorChannel != major || minorChannel != minor))
    189191    {
    190192        RemoveFlags(kDTVSigMon_PATSeen   | kDTVSigMon_PATMatch |
     
    201203void DTVSignalMonitor::SetProgramNumber(int progNum)
    202204{
    203205    DBG_SM(QString("SetProgramNumber(%1)").arg(progNum), "");
     206    last_pat_crc = -1;
    204207    if (programNumber != progNum)
    205208    {
    206209        RemoveFlags(kDTVSigMon_PMTSeen   | kDTVSigMon_PMTMatch |
     
    216219{
    217220    DBG_SM(QString("SetDVBService(transport_id: %1, network_id: %2, "
    218221                   "service_id: %3)").arg(tsid).arg(netid).arg(serviceid), "");
     222    last_pat_crc = -1;
    219223
    220224    if (netid == networkID && tsid == transportID &&
    221225        serviceid == programNumber)
     
    280284    {
    281285        AddFlags(kDTVSigMon_PATMatch);
    282286        GetStreamData()->AddListeningPID(pmt_pid);
     287        last_pat_crc = pat->CRC();
    283288        return;
    284289    }
    285290
     
    293298        GetStreamData()->SetVersionPAT(tsid, -1,0);
    294299        // END HACK HACK HACK
    295300
    296         QString errStr = QString("Program #%1 not found in PAT!")
    297             .arg(programNumber);
    298         VERBOSE(VB_IMPORTANT, errStr<<endl<<pat->toString()<<endl);
     301        if (last_pat_crc != pat->CRC())
     302        {
     303            last_pat_crc = pat->CRC();
     304            QString errStr = QString("Program #%1 not found in PAT!")
     305                .arg(programNumber);
     306            VERBOSE(VB_IMPORTANT, errStr<<endl<<pat->toString());
     307        }
    299308        if (pat->ProgramCount() == 1)
    300309        {
    301310            VERBOSE(VB_IMPORTANT, "But there is only one program "
     
    303312            SetProgramNumber(pat->ProgramNumber(0));
    304313            AddFlags(kDTVSigMon_PATMatch);
    305314            GetStreamData()->AddListeningPID(pat->ProgramPID(0));
     315            last_pat_crc == pat->CRC();
    306316        }
    307317    }
    308318}
  • libs/libmythtv/dtvsignalmonitor.h

    old new  
    137137    uint               detectedTransportID;
    138138    // MPEG/DVB/ATSC tuning info
    139139    int                programNumber;
     140    // CRC of the last seen PAT
     141    int64_t           last_pat_crc;
    140142
    141143    QString            error;
    142144};