revert unneeded changes for sdt update
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Tue, 9 May 2006 21:22:22 +0000 (21:22 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Tue, 9 May 2006 21:22:22 +0000 (21:22 +0000)
restructure code for better readability
add some comments
remove some debug output

lib/dvb/pmt.cpp
lib/dvb/scan.cpp

index 74042ed..4af1802 100644 (file)
@@ -443,32 +443,21 @@ int eDVBServicePMTHandler::getPVRChannel(ePtr<iDVBPVRChannel> &pvr_channel)
 
 void eDVBServicePMTHandler::SDTScanEvent(int event)
 {
-       eDebug("scan event %d!", event);
-
        switch (event)
        {
                case eDVBScan::evtFinish:
                {
                        ePtr<iDVBChannelList> db;
-                       int err;
-                       if ((err = m_resourceManager->getChannelList(db)) != 0)
+                       if (m_resourceManager->getChannelList(db) != 0)
                                eDebug("no channel list");
                        else
                        {
                                m_dvb_scan->insertInto(db);
-                               eDebug("scan done!");
+                               eDebug("sdt update done!");
                        }
                        break;
                }
 
-               case eDVBScan::evtNewService:
-                       eDebug("scan new service");
-                       break;
-
-               case eDVBScan::evtFail:
-                       eDebug("scan failed.");
-                       break;
-
                default:
                        break;
        }
@@ -558,7 +547,7 @@ int eDVBServicePMTHandler::tune(eServiceReferenceDVB &ref, int use_decode_demux,
 
 void eDVBServicePMTHandler::free()
 {
-       eDVBScan *tmp = m_dvb_scan;
+       eDVBScan *tmp = m_dvb_scan;  // do a copy on stack (recursive call of free()) !!!
        m_dvb_scan = 0;
        delete m_dvb_scan;
 
index 17c6b5c..ade63d8 100644 (file)
 
 DEFINE_REF(eDVBScan);
 
-eDVBScan::eDVBScan(iDVBChannel *channel): m_channel(channel)
+eDVBScan::eDVBScan(iDVBChannel *channel)
+       :m_channel(channel), m_ready(0), m_flags(0), m_ready_all(readySDT)
+       ,m_channel_state(iDVBChannel::state_idle)
 {
-       m_ready = m_flags = 0;
-       m_ready_all = readySDT;
-       m_channel_state = iDVBChannel::state_idle;
-
        if (m_channel->getDemux(m_demux))
                SCAN_eDebug("scan: failed to allocate demux!");
        m_channel->connectStateChange(slot(*this, &eDVBScan::stateChange), m_stateChanged_connection);
@@ -102,10 +100,10 @@ RESULT eDVBScan::nextChannel()
        
        if (m_ch_toScan.empty())
        {
-               SCAN_eDebug("no channels left to scan.");
-               SCAN_eDebug("%d channels scanned, %d were unavailable.", 
-                               m_ch_scanned.size(), m_ch_unavailable.size());
-               SCAN_eDebug("%d channels in database.", m_new_channels.size());
+//             SCAN_eDebug("no channels left to scan.");
+//             SCAN_eDebug("%d channels scanned, %d were unavailable.", 
+//                             m_ch_scanned.size(), m_ch_unavailable.size());
+//             SCAN_eDebug("%d channels in database.", m_new_channels.size());
                m_event(evtFinish);
                return -ENOENT;
        }
@@ -257,13 +255,12 @@ void eDVBScan::channelDone()
        {
                unsigned long hash = 0;
 
-               ePtr<iDVBFrontendParameters> p = m_ch_current;
-
-               if (!p)  // used in sdt scan
-                       m_channel->getCurrentFrontendParameters(p);
-
-               p->getHash(hash);
+               // m_ch_current is not set, when eDVBScan is just used for a SDT update
+               if (!m_ch_current)
+                       m_channel->getCurrentFrontendParameters(m_ch_current);
 
+               m_ch_current->getHash(hash);
+               
                eDVBNamespace dvbnamespace = buildNamespace(
                        (**m_SDT->getSections().begin()).getOriginalNetworkId(),
                        (**m_SDT->getSections().begin()).getTransportStreamId(),
@@ -394,16 +391,12 @@ void eDVBScan::channelDone()
                   here, and not before.
                */
 
-       ePtr<iDVBFrontendParameters> p = m_ch_current;
-       if (!p)
-               m_channel->getCurrentFrontendParameters(p);
-
        if (!m_chid_current)
                eWarning("SCAN: the current channel's ID was not corrected - not adding channel.");
        else
-               addKnownGoodChannel(m_chid_current, p);
-
-       m_ch_scanned.push_back(p);
+               addKnownGoodChannel(m_chid_current, m_ch_current);
+       
+       m_ch_scanned.push_back(m_ch_current);
        nextChannel();
 }