diff options
| author | ghost <andreas.monzner@multimedia-labs.de> | 2009-12-23 16:21:59 +0100 |
|---|---|---|
| committer | ghost <andreas.monzner@multimedia-labs.de> | 2009-12-23 16:21:59 +0100 |
| commit | b209ca0ac28a2e1ddc1f27642b0dec0f376b0ad2 (patch) | |
| tree | 922b78774d8f36ff2768231e4970161c2660ff47 | |
| parent | ee9a89efd6533997e3dc9a4e8adcb360333d01d9 (diff) | |
| parent | 94b346a792a343858948de8c6db1301592af5986 (diff) | |
| download | enigma2-b209ca0ac28a2e1ddc1f27642b0dec0f376b0ad2.tar.gz enigma2-b209ca0ac28a2e1ddc1f27642b0dec0f376b0ad2.zip | |
Merge branch 'bug_352_fix_some_cutlist_bugs'
| -rw-r--r-- | Navigation.py | 4 | ||||
| -rw-r--r-- | lib/dvb/dvb.cpp | 2 | ||||
| -rw-r--r-- | lib/dvb/idvb.h | 2 | ||||
| -rw-r--r-- | lib/dvb/pmt.cpp | 3 | ||||
| -rw-r--r-- | lib/dvb/pmt.h | 1 | ||||
| -rw-r--r-- | lib/python/Plugins/Extensions/CutListEditor/plugin.py | 2 | ||||
| -rw-r--r-- | lib/service/servicedvb.cpp | 4 |
7 files changed, 13 insertions, 5 deletions
diff --git a/Navigation.py b/Navigation.py index 2ca87f6f..2437bbf5 100644 --- a/Navigation.py +++ b/Navigation.py @@ -50,9 +50,9 @@ class Navigation: for x in self.record_event: x(rec_service, event) - def playService(self, ref, checkParentalControl = True): + def playService(self, ref, checkParentalControl = True, forceRestart = False): oldref = self.currentlyPlayingServiceReference - if ref and oldref and ref == oldref: + if ref and oldref and ref == oldref and not forceRestart: print "ignore request to play already running service" return 0 print "playing", ref and ref.toString() diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp index a8dfb193..6eaadb04 100644 --- a/lib/dvb/dvb.cpp +++ b/lib/dvb/dvb.cpp @@ -1766,6 +1766,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<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; 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/python/Plugins/Extensions/CutListEditor/plugin.py b/lib/python/Plugins/Extensions/CutListEditor/plugin.py index efe9f761..abd606d6 100644 --- a/lib/python/Plugins/Extensions/CutListEditor/plugin.py +++ b/lib/python/Plugins/Extensions/CutListEditor/plugin.py @@ -195,7 +195,7 @@ class CutListEditor(Screen, InfoBarBase, InfoBarSeek, InfoBarCueSheetSupport, He self.onClose.append(self.__onClose) def __onClose(self): - self.session.nav.playService(self.old_service) + self.session.nav.playService(self.old_service, forceRestart=True) def updateStateLabel(self, state): self["SeekState"].setText(state[3].strip()) diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index a6b6cc6f..b5e2651f 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; |
