aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2006-01-17 00:22:47 +0000
committerFelix Domke <tmbinc@elitedvb.net>2006-01-17 00:22:47 +0000
commit721f838966ed31bde07d08792154e0750d6dd9ae (patch)
tree325bed60e0d7eb7a41c3d702ed99d43ab8d93969 /lib/dvb
parent8eadc0e09e19713d6c2b1c12aa2946042cfafabe (diff)
downloadenigma2-721f838966ed31bde07d08792154e0750d6dd9ae.tar.gz
enigma2-721f838966ed31bde07d08792154e0750d6dd9ae.zip
handle EOF event in pmt handler
Diffstat (limited to 'lib/dvb')
-rw-r--r--lib/dvb/pmt.cpp16
-rw-r--r--lib/dvb/pmt.h7
2 files changed, 22 insertions, 1 deletions
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<eConnection> m_channelStateChanged_connection;
+ void channelEvent(iDVBChannel *, int event);
+ ePtr<eConnection> 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<void,int> serviceEvent;