From: ghost Date: Sun, 13 Dec 2009 11:37:15 +0000 (+0100) Subject: add preStart event and use it to load the cutlist X-Git-Tag: 3.0.0~28^2~66^2~142 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/7373f39fe2ebe1b5007ed56ddd86d9ce0ad3efb7 add preStart event and use it to load the cutlist --- diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp index 656b6da0..17712dde 100644 --- a/lib/dvb/dvb.cpp +++ b/lib/dvb/dvb.cpp @@ -1764,6 +1764,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; diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index cff4dbb9..4ef7efad 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -522,7 +522,7 @@ public: virtual RESULT getCurrentFrontendParameters(ePtr &)=0; enum { - evtEOF, evtSOF, evtFailed + evtPreStart, evtEOF, evtSOF, evtFailed }; virtual RESULT connectStateChange(const Slot1 &stateChange, ePtr &connection)=0; virtual RESULT connectEvent(const Slot2 &eventChange, ePtr &connection)=0; diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp index 9bd065b3..ee89a3a4 100644 --- a/lib/dvb/pmt.cpp +++ b/lib/dvb/pmt.cpp @@ -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; diff --git a/lib/dvb/pmt.h b/lib/dvb/pmt.h index a9ca23f2..483c06b1 100644 --- a/lib/dvb/pmt.h +++ b/lib/dvb/pmt.h @@ -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 diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index c8e64b80..77e2bd4e 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -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;