X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/3ecd3b8d7f2d52fd7b5956c1fe08f926cc2a2858..80058dea34aae48ed729986a65112f0096f5b2d5:/lib/service/servicedvb.cpp diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 098952bd..6c980c76 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include // access to python config @@ -211,6 +212,8 @@ std::string eStaticServiceDVBPVRInformation::getInfoString(const eServiceReferen return m_parser.m_description; case iServiceInformation::sServiceref: return m_parser.m_ref.toString(); + case iServiceInformation::sTags: + return m_parser.m_tags; default: return ""; } @@ -1337,6 +1340,8 @@ int eDVBServicePlay::selectAudioStream(int i) } } + h.resetCachedProgram(); + return 0; } @@ -1362,7 +1367,7 @@ std::string eDVBServicePlay::getRadioText(int x) switch(x) { case 0: - return m_radiotext_parser->getCurrentText(); + return convertLatin1UTF8(m_radiotext_parser->getCurrentText()); } return ""; } @@ -1823,6 +1828,8 @@ void eDVBServicePlay::updateDecoder() m_decoder->setTextPID(tpid); + m_teletext_parser->start(program.textPid); + if (!m_is_primary) m_decoder->setTrickmode(1); @@ -2006,21 +2013,20 @@ RESULT eDVBServicePlay::enableSubtitles(eWidget *parent, PyObject *entry) if (page > 0) { - eDVBServicePMTHandler &h = m_timeshift_active ? m_service_handler_timeshift : m_service_handler; +/* eDVBServicePMTHandler &h = m_timeshift_active ? m_service_handler_timeshift : m_service_handler; eDVBServicePMTHandler::program program; if (h.getProgramInfo(program)) eDebug("getting program info failed."); else { eDebug("start teletext on pid %04x, page %d", program.textPid, page); - m_teletext_parser->start(program.textPid); + m_teletext_parser->start(program.textPid);*/ m_teletext_parser->setPage(page); - } +// } } else { int pid = -page; - eDebug("start dvb subtitles on pid %04x", pid); m_subtitle_parser->start(pid); } @@ -2031,6 +2037,16 @@ RESULT eDVBServicePlay::disableSubtitles(eWidget *parent) { delete m_subtitle_widget; m_subtitle_widget = 0; + if (m_subtitle_parser) + { + m_subtitle_parser->stop(); + m_dvb_subtitle_pages.clear(); + } + if (m_teletext_parser) + { + m_teletext_parser->setPage(-1); + m_subtitle_pages.clear(); + } return 0; } @@ -2048,7 +2064,7 @@ PyObject *eDVBServicePlay::getSubtitleList() { PyObject *tuple = PyTuple_New(2); char desc[20]; - sprintf(desc, "Page %x", *i); + sprintf(desc, "Page %d", *i); PyTuple_SetItem(tuple, 0, PyString_FromString(desc)); PyTuple_SetItem(tuple, 1, PyInt_FromLong(*i)); PyList_Append(l, tuple); @@ -2089,6 +2105,8 @@ void eDVBServicePlay::newSubtitlePage(const eDVBTeletextSubtitlePage &page) void eDVBServicePlay::checkSubtitleTiming() { // eDebug("checkSubtitleTiming"); + if (!m_subtitle_widget) + return; while (1) { enum { TELETEXT, DVB } type;