add preStart event and use it to load the cutlist
authorghost <andreas.monzner@multimedia-labs.de>
Sun, 13 Dec 2009 11:37:15 +0000 (12:37 +0100)
committerghost <andreas.monzner@multimedia-labs.de>
Sun, 13 Dec 2009 11:37:15 +0000 (12:37 +0100)
lib/dvb/dvb.cpp
lib/dvb/idvb.h
lib/dvb/pmt.cpp
lib/dvb/pmt.h
lib/service/servicedvb.cpp

index 894287e84f18845b6e06d39a467033a1d62688fa..76f6899df31edee6117a0029d8fc875887ff081c 100644 (file)
@@ -1771,6 +1771,8 @@ RESULT eDVBChannel::playFile(const char *file)
        m_pvr_thread->setStreamMode(1);
        m_pvr_thread->setScatterGather(this);
 
+       m_event(this, evtPreStart);
+
        if (m_pvr_thread->start(file, m_pvr_fd_dst))
        {
                delete m_pvr_thread;
index cff4dbb97e0c6a24eaf3e40c80fe1389878d4ff9..4ef7efaddbebe9b26cc67c5eff0527b879a183df 100644 (file)
@@ -522,7 +522,7 @@ public:
        virtual RESULT getCurrentFrontendParameters(ePtr<iDVBFrontendParameters> &)=0;
        enum 
        {
-               evtEOF, evtSOF, evtFailed
+               evtPreStart, evtEOF, evtSOF, evtFailed
        };
        virtual RESULT connectStateChange(const Slot1<void,iDVBChannel*> &stateChange, ePtr<eConnection> &connection)=0;
        virtual RESULT connectEvent(const Slot2<void,iDVBChannel*,int> &eventChange, ePtr<eConnection> &connection)=0;
index 9bd065b3d075e4ebf90bc8a77909e5902f909a21..ee89a3a43a93a55133f838c2d1aa34e27fdc2798 100644 (file)
@@ -75,6 +75,9 @@ void eDVBServicePMTHandler::channelEvent(iDVBChannel *channel, int event)
 {
        switch (event)
        {
+       case iDVBChannel::evtPreStart:
+               serviceEvent(eventPreStart);
+               break;
        case iDVBChannel::evtEOF:
                serviceEvent(eventEOF);
                break;
index a9ca23f246308b44d750fcaee304b7fa99d5dc2b..483c06b15ae3007c06514ca7760d30fdf7a05300 100644 (file)
@@ -123,6 +123,7 @@ public:
                eventNewProgramInfo, // we just received a PMT
                eventTuned,        // a channel was sucessfully (re-)tuned in, you may start additional filters now
                
+               eventPreStart,     // before start filepush thread
                eventSOF,          // seek pre start
                eventEOF,          // a file playback did end
                
index 1a28fbdd17907d2dda1a43403d85abef3df4db58..19bac206d44653065a7907c78b19b2f283b4016f 100644 (file)
@@ -1029,6 +1029,9 @@ void eDVBServicePlay::serviceEvent(int event)
                m_event((iPlayableService*)this, evUpdatedInfo);
                break;
        }
+       case eDVBServicePMTHandler::eventPreStart:
+               loadCuesheet();
+               break;
        case eDVBServicePMTHandler::eventEOF:
                m_event((iPlayableService*)this, evEOF);
                break;
@@ -1095,7 +1098,6 @@ RESULT eDVBServicePlay::start()
                        m_event_handler.inject(event, 0);
                        m_event_handler.inject(empty, 1);
                }
-               loadCuesheet();
                m_event(this, evStart);
        }
        return 0;