Ticket #4632: passiveeit.patch

File passiveeit.patch, 3.3 KB (added by dm@…, 13 years ago)
  • libs/libmythtv/dvbstreamhandler.cpp

     
    177177void DVBStreamHandler::Start(void)
    178178{
    179179    QMutexLocker locker(&_start_stop_lock);
     180    _eit_pids.clear();
    180181
    181182    if (IsRunning() && _using_section_reader && !_allow_section_reader)
    182183        Stop();
  • libs/libmythtv/mpeg/dvbstreamdata.cpp

     
    108108    if (is_eit)
    109109    {
    110110        uint service_id = psip.TableIDExtension();
    111         if (VersionEIT(table_id, service_id) != version)
     111        uint section_id = psip.Section();
     112        if (VersionEIT(table_id, service_id, section_id) != version)
    112113            return false;
    113         return EITSectionSeen(table_id, service_id, psip.Section());
     114        return EITSectionSeen(table_id, service_id, section_id);
    114115    }
    115116
    116117    ////////////////////////////////////////////////////////////////////////
     
    147148    if (is_eit)
    148149    {
    149150        uint service_id = psip.TableIDExtension();
    150         if (VersionEIT(table_id, service_id) != version)
     151        uint section_id = psip.Section();
     152        if (VersionEIT(table_id, service_id, section_id) != version)
    151153            return false;
    152         return EITSectionSeen(table_id, service_id, psip.Section());
     154        return EITSectionSeen(table_id, service_id, section_id);
    153155    }
    154156
    155157    if (PREMIERE_EIT_DIREKT_PID == pid || PREMIERE_EIT_SPORT_PID == pid
     
    335337            return true;
    336338
    337339        uint service_id = psip.TableIDExtension();
    338         SetVersionEIT(psip.TableID(), service_id, psip.Version());
    339         SetEITSectionSeen(psip.TableID(), service_id, psip.Section());
     340        uint section_id = psip.Section();
     341        SetVersionEIT(psip.TableID(), service_id, section_id, psip.Version());
     342        SetEITSectionSeen(psip.TableID(), service_id, section_id);
    340343
    341344        DVBEventInformationTable eit(psip);
    342345        for (uint i = 0; i < _dvb_eit_listeners.size(); i++)
  • libs/libmythtv/mpeg/dvbstreamdata.h

     
    9797        return *it;
    9898    }
    9999
    100     void SetVersionEIT(uint tableid, uint serviceid, int version)
     100    void SetVersionEIT(uint tableid, uint serviceid, uint sectionid, int version)
    101101    {
    102         if (VersionEIT(tableid, serviceid) == version)
     102        if (VersionEIT(tableid, serviceid, sectionid) == version)
    103103            return;
    104         uint key = (tableid << 16) | serviceid;
     104        uint key = (sectionid << 24) | (tableid << 16) | serviceid;
    105105        _eit_version[key] = version;
    106106    }
    107107
    108     int VersionEIT(uint tableid, uint serviceid) const
     108    int VersionEIT(uint tableid, uint serviceid, uint sectionid) const
    109109    {
    110         uint key = (tableid << 16) | serviceid;
     110        uint key = (sectionid << 24) | (tableid << 16) | serviceid;
    111111        const QMap<uint, int>::const_iterator it = _eit_version.find(key);
    112112        if (it == _eit_version.end())
    113113            return -1;