X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fdvb%2Fesection.cpp;h=28e37cbc769de87a5fc0bf703051a681121676dd;hp=0af622521aad7e0ae1f7d6394774c4233068587e;hb=55b8dd6115c2bb0921842c6dc77aafb8d0a40c4f;hpb=45b3e7fc62f7eb221b13cfe0a286d52aade93bc1 diff --git a/lib/dvb/esection.cpp b/lib/dvb/esection.cpp index 0af6225..28e37cb 100644 --- a/lib/dvb/esection.cpp +++ b/lib/dvb/esection.cpp @@ -23,7 +23,12 @@ void eGTable::sectionRead(const __u8 *d) { if (m_timeout) m_timeout->stop(); - m_reader->stop(); + if (m_reader) + { + m_reader->stop(); + m_reader=0; + } + m_sectionRead_conn=0; ready = 1; tableReady(error); } else if ((m_table.flags & eDVBTableSpec::tfHaveTimeout) && m_timeout) @@ -32,15 +37,20 @@ void eGTable::sectionRead(const __u8 *d) void eGTable::timeout() { - eDebug("timeout!"); - m_reader->stop(); + TABLE_eDebug("timeout %04x!", m_table.pid); + if (m_reader) + { + m_reader->stop(); + m_reader=0; + } + m_sectionRead_conn=0; ready = 1; error = -1; tableReady(error); } -eGTable::eGTable(): - m_timeout(0), error(0) +eGTable::eGTable(bool debug): + m_debug(debug), error(0) { } @@ -93,36 +103,34 @@ RESULT eGTable::start(iDVBSectionReader *reader, const eDVBTableSpec &table) if (!(m_table.flags & eDVBTableSpec::tfAnyVersion)) { - eDebug("doing version filtering"); + TABLE_eDebug("doing version filtering"); mask.data[3] |= (m_table.version << 1)|1; mask.mask[3] |= 0x3f; if (!(m_table.flags & eDVBTableSpec::tfThisVersion)) mask.mode[3] |= 0x3e; // negative filtering } else - eDebug("no version filtering"); - - eDebug("%04x: %02x %02x %02x %02x %02x %02x", + TABLE_eDebug("no version filtering"); + + TABLE_eDebug("%04x: %02x %02x %02x %02x %02x %02x", mask.pid, mask.data[0], mask.data[1], mask.data[2], mask.data[3], mask.data[4], mask.data[5]); - eDebug("mask: %02x %02x %02x %02x %02x %02x", + TABLE_eDebug("mask: %02x %02x %02x %02x %02x %02x", mask.mask[0], mask.mask[1], mask.mask[2], mask.mask[3], mask.mask[4], mask.mask[5]); - eDebug("mode: %02x %02x %02x %02x %02x %02x", + TABLE_eDebug("mode: %02x %02x %02x %02x %02x %02x", mask.mode[0], mask.mode[1], mask.mode[2], mask.mode[3], mask.mode[4], mask.mode[5]); if ((res = m_reader->start(mask))) { - eDebug("reader failed to start."); + TABLE_eDebug("reader failed to start."); return res; } if (m_table.flags & eDVBTableSpec::tfHaveTimeout) { - if (m_timeout) - delete m_timeout; - m_timeout = new eTimer(eApp); + m_timeout = eTimer::create(eApp); m_timeout->start(m_table.timeout, 1); // begin timeout CONNECT(m_timeout->timeout, eGTable::timeout); } @@ -142,8 +150,6 @@ RESULT eGTable::start(iDVBDemux *demux, const eDVBTableSpec &table) eGTable::~eGTable() { - if (m_timeout) - delete m_timeout; } void eAUGTable::slotTableReady(int error)