handle EOF event in pmt handler
authorFelix Domke <tmbinc@elitedvb.net>
Tue, 17 Jan 2006 00:22:47 +0000 (00:22 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Tue, 17 Jan 2006 00:22:47 +0000 (00:22 +0000)
lib/dvb/pmt.cpp
lib/dvb/pmt.h

index 8c56589c710f6163fc1cca43943c6c5b056382e1..2455b95ff31ddc0a7bb9df992cfa0cad733e5798 100644 (file)
@@ -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)
 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_channelStateChanged_connection);
                m_last_channel_state = -1;
                channelStateChanged(m_channel);
+
+               m_channel->connectEvent(
+                       slot(*this, &eDVBServicePMTHandler::channelEvent), 
+                       m_channelEvent_connection);
        } else
        {
                serviceEvent(eventTuneFailed);
        } else
        {
                serviceEvent(eventTuneFailed);
index 995cc9be5b9dc4c821ce93d5fcb42596d814cb40..aabac24dc0ef13a72b1f3f7399e54836896e145d 100644 (file)
@@ -61,11 +61,14 @@ class eDVBServicePMTHandler: public Object
        
        void channelStateChanged(iDVBChannel *);
        ePtr<eConnection> m_channelStateChanged_connection;
        
        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;
 
        void PMTready(int error);
        void PATready(int error);
        
        int m_use_decode_demux;
+       
 public:
        eDVBServicePMTHandler();
        ~eDVBServicePMTHandler();
 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
                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;
        };
 
        Signal1<void,int> serviceEvent;