From: Felix Domke Date: Tue, 17 Jan 2006 00:22:47 +0000 (+0000) Subject: handle EOF event in pmt handler X-Git-Tag: 2.6.0~4412 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/721f838966ed31bde07d08792154e0750d6dd9ae handle EOF event in pmt handler --- diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp index 8c56589c..2455b95f 100644 --- a/lib/dvb/pmt.cpp +++ b/lib/dvb/pmt.cpp @@ -64,6 +64,18 @@ void eDVBServicePMTHandler::channelStateChanged(iDVBChannel *channel) } } +void eDVBServicePMTHandler::channelEvent(iDVBChannel *channel, int event) +{ + switch (event) + { + case iDVBChannel::evtEOF: + serviceEvent(eventEOF); + break; + default: + break; + } +} + void eDVBServicePMTHandler::PMTready(int error) { if (error) @@ -370,6 +382,10 @@ int eDVBServicePMTHandler::tune(eServiceReferenceDVB &ref, int use_decode_demux) m_channelStateChanged_connection); m_last_channel_state = -1; channelStateChanged(m_channel); + + m_channel->connectEvent( + slot(*this, &eDVBServicePMTHandler::channelEvent), + m_channelEvent_connection); } else { serviceEvent(eventTuneFailed); diff --git a/lib/dvb/pmt.h b/lib/dvb/pmt.h index 995cc9be..aabac24d 100644 --- a/lib/dvb/pmt.h +++ b/lib/dvb/pmt.h @@ -61,11 +61,14 @@ class eDVBServicePMTHandler: public Object void channelStateChanged(iDVBChannel *); ePtr m_channelStateChanged_connection; + void channelEvent(iDVBChannel *, int event); + ePtr m_channelEvent_connection; void PMTready(int error); void PATready(int error); int m_use_decode_demux; + public: eDVBServicePMTHandler(); ~eDVBServicePMTHandler(); @@ -78,7 +81,9 @@ public: eventNoPATEntry, // no pat entry for the corresponding SID could be found eventNoPMT, // no pmt could be received (timeout) eventNewProgramInfo, // we just received a PMT - eventTuned // a channel was sucessfully (re-)tuned in, you may start additional filters now + eventTuned, // a channel was sucessfully (re-)tuned in, you may start additional filters now + + eventEOF, // a file playback did end }; Signal1 serviceEvent;