aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/dvb/dvb.cpp2
-rw-r--r--lib/dvb/idvb.h2
-rw-r--r--lib/dvb/pmt.cpp3
-rw-r--r--lib/dvb/pmt.h1
-rw-r--r--lib/service/servicedvb.cpp4
5 files changed, 10 insertions, 2 deletions
diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp
index 894287e8..76f6899d 100644
--- a/lib/dvb/dvb.cpp
+++ b/lib/dvb/dvb.cpp
@@ -1771,6 +1771,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/service/servicedvb.cpp b/lib/service/servicedvb.cpp
index 1a28fbdd..19bac206 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;