X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/cae42942341da662731d22562ddaf098021b6363..33ceea2a8e9afa4d3002724d2fe3f2fbe3909ea9:/lib/service/servicedvb.cpp diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index a0c1cbc7..38504467 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -185,6 +186,8 @@ int eStaticServiceDVBPVRInformation::getInfo(const eServiceReference &ref, int w { case iServiceInformation::sDescription: return iServiceInformation::resIsString; + case iServiceInformation::sServiceref: + return iServiceInformation::resIsString; case iServiceInformation::sTimeCreate: if (m_parser.m_time_create) return m_parser.m_time_create; @@ -201,6 +204,8 @@ std::string eStaticServiceDVBPVRInformation::getInfoString(const eServiceReferen { case iServiceInformation::sDescription: return m_parser.m_description; + case iServiceInformation::sServiceref: + return m_parser.m_ref.toString(); default: return ""; } @@ -233,11 +238,18 @@ RESULT eDVBPVRServiceOfflineOperations::deleteFromDisk(int simulate) if (getListOfFilenames(res)) return -1; + eBackgroundFileEraser *eraser = eBackgroundFileEraser::getInstance(); + if (!eraser) + eDebug("FATAL !! can't get background file eraser"); + /* TODO: deferred removing.. */ for (std::list::iterator i(res.begin()); i != res.end(); ++i) { eDebug("Removing %s...", i->c_str()); - ::unlink(i->c_str()); + if (eraser) + eraser->erase(i->c_str()); + else + ::unlink(i->c_str()); } return 0; @@ -248,10 +260,25 @@ RESULT eDVBPVRServiceOfflineOperations::getListOfFilenames(std::list &service, const eServ eDVBServicePlay::eDVBServicePlay(const eServiceReference &ref, eDVBService *service): m_reference(ref), m_dvb_service(service), m_is_paused(0) { + m_is_primary = 1; + /* HACK!!! */ + if (m_reference.path == "s") + { + m_reference.path = ""; + ref.path = ""; + m_is_primary = 0; + } + m_is_pvr = !ref.path.empty(); m_timeshift_enabled = m_timeshift_active = 0; @@ -1497,7 +1533,7 @@ void eDVBServicePlay::updateDecoder() { h.getDecodeDemux(m_decode_demux); if (m_decode_demux) - m_decode_demux->getMPEGDecoder(m_decoder); + m_decode_demux->getMPEGDecoder(m_decoder, m_is_primary); if (m_cue) m_cue->setDecodingDemux(m_decode_demux, m_decoder); } @@ -1507,11 +1543,13 @@ void eDVBServicePlay::updateDecoder() m_decoder->setVideoPID(vpid); m_current_audio_stream = 0; m_decoder->setAudioPID(apid, apidtype); - if (!(m_is_pvr || m_timeshift_active)) + if (!(m_is_pvr || m_timeshift_active || !m_is_primary)) m_decoder->setSyncPCR(pcrpid); else m_decoder->setSyncPCR(-1); m_decoder->setTextPID(tpid); + if (!m_is_primary) + m_decoder->setTrickmode(1); m_decoder->start(); // how we can do this better? // update cache pid when the user changed the audio track or video track