X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/3ecd3b8d7f2d52fd7b5956c1fe08f926cc2a2858..f1ba8813bfe7a7ceedbf9175126264158ed85409:/lib/service/servicedvb.cpp diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 098952bd..fe9398cb 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -1337,6 +1337,8 @@ int eDVBServicePlay::selectAudioStream(int i) } } + h.resetCachedProgram(); + return 0; } @@ -1823,6 +1825,8 @@ void eDVBServicePlay::updateDecoder() m_decoder->setTextPID(tpid); + m_teletext_parser->start(program.textPid); + if (!m_is_primary) m_decoder->setTrickmode(1); @@ -2006,21 +2010,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 +2034,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; } @@ -2089,6 +2102,8 @@ void eDVBServicePlay::newSubtitlePage(const eDVBTeletextSubtitlePage &page) void eDVBServicePlay::checkSubtitleTiming() { // eDebug("checkSubtitleTiming"); + if (!m_subtitle_widget) + return; while (1) { enum { TELETEXT, DVB } type;