From 721f838966ed31bde07d08792154e0750d6dd9ae Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Tue, 17 Jan 2006 00:22:47 +0000 Subject: [PATCH] handle EOF event in pmt handler --- lib/dvb/pmt.cpp | 16 ++++++++++++++++ lib/dvb/pmt.h | 7 ++++++- 2 files changed, 22 insertions(+), 1 deletion(-) 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; -- 2.30.2