X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/d9ee52e4f0fbe9a1ae00d0e66f9e6f0a07fa319f..3af66122574386a2856e83ba9c5d73d27a6f3710:/lib/service/servicedvb.cpp diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index d1ebeb30..48d00d65 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -134,7 +134,8 @@ RESULT eServiceFactoryDVB::info(const eServiceReference &ref, ePtr m_event_now, m_event_next; + getEvent(m_event_now, 0); + getEvent(m_event_next, 1); + + if (m_event_now) + eDebug("now running: %s (%d seconds :)", m_event_now->m_event_name.c_str(), m_event_now->m_duration); + if (m_event_next) + eDebug("next running: %s (%d seconds :)", m_event_next->m_event_name.c_str(), m_event_next->m_duration); +#endif + m_event((iPlayableService*)this, evUpdatedEventInfo); +} + void eDVBServicePlay::serviceEvent(int event) { eDebug("service event %d", event); switch (event) { + case eDVBServicePMTHandler::eventTuned: + { + ePtr m_demux; + if (!m_service_handler.getDemux(m_demux)) + { +// eventStartedEventAcquisition + m_event_handler.start(m_demux, ((eServiceReferenceDVB&)m_reference).getServiceID().get()); + } else + eDebug("no event data available :( "); +// eventNoEvent + break; + } case eDVBServicePMTHandler::eventNewProgramInfo: { int vpid = -1, apid = -1, pcrpid = -1; eDVBServicePMTHandler::program program; - if (m_serviceHandler.getProgramInfo(program)) + if (m_service_handler.getProgramInfo(program)) eDebug("getting program info failed."); else { @@ -196,7 +225,7 @@ void eDVBServicePlay::serviceEvent(int event) if (!m_decoder) { ePtr demux; - m_serviceHandler.getDemux(demux); + m_service_handler.getDemux(demux); if (demux) demux->getMPEGDecoder(m_decoder); } @@ -208,7 +237,7 @@ void eDVBServicePlay::serviceEvent(int event) m_decoder->setSyncPCR(pcrpid); m_decoder->start(); } - + break; } } @@ -217,7 +246,7 @@ void eDVBServicePlay::serviceEvent(int event) RESULT eDVBServicePlay::start() { eDebug("starting DVB service"); - return m_serviceHandler.tune((eServiceReferenceDVB&)m_reference); + return m_service_handler.tune((eServiceReferenceDVB&)m_reference); } RESULT eDVBServicePlay::stop() @@ -228,7 +257,8 @@ RESULT eDVBServicePlay::stop() RESULT eDVBServicePlay::connectEvent(const Slot2 &event, ePtr &connection) { - return -1; + connection = new eConnection((iPlayableService*)this, m_event.connect(event)); + return 0; } RESULT eDVBServicePlay::pause(ePtr &ptr) @@ -250,6 +280,11 @@ RESULT eDVBServicePlay::getName(const eServiceReference &ref, std::string &name) return 0; } +RESULT eDVBServicePlay::getEvent(ePtr &evt, int nownext) +{ + return m_event_handler.getEvent(evt, nownext); +} + DEFINE_REF(eDVBServicePlay) eAutoInitPtr init_eServiceFactoryDVB(eAutoInitNumbers::service+1, "eServiceFactoryDVB");