From 7a55b56227014d8e6cff6773946d19219b4599f8 Mon Sep 17 00:00:00 2001 From: Andreas Monzner Date: Wed, 25 Oct 2006 21:58:42 +0000 Subject: [PATCH] fix 'start'/'stop'/'select other' subtitles --- configure.ac | 4 ---- lib/dvb/subtitle.cpp | 19 ++++++++++++++----- lib/dvb/subtitle.h | 1 + lib/dvb/teletext.cpp | 4 ++++ lib/python/Plugins/Extensions/Makefile.am | 2 +- lib/python/Screens/InfoBarGenerics.py | 10 ++++++---- lib/service/servicedvb.cpp | 13 ++++++++++++- 7 files changed, 38 insertions(+), 15 deletions(-) diff --git a/configure.ac b/configure.ac index 5dc22f63..67fa8509 100644 --- a/configure.ac +++ b/configure.ac @@ -75,11 +75,7 @@ lib/python/Plugins/DemoPlugins/Makefile lib/python/Plugins/DemoPlugins/TestPlugin/Makefile lib/python/Plugins/Extensions/Makefile lib/python/Plugins/Extensions/TuxboxPlugins/Makefile -lib/python/Plugins/Extensions/WebInterface/Makefile -lib/python/Plugins/Extensions/WebInterface/web/Makefile -lib/python/Plugins/Extensions/WebInterface/web-data/Makefile lib/python/Plugins/Extensions/FileManager/Makefile -lib/python/Plugins/Extensions/FritzCall/Makefile lib/python/Plugins/Extensions/CutListEditor/Makefile lib/python/Plugins/Extensions/ZappingAlternatives/Makefile lib/python/Tools/Makefile diff --git a/lib/dvb/subtitle.cpp b/lib/dvb/subtitle.cpp index 23ea6dce..0058a51c 100644 --- a/lib/dvb/subtitle.cpp +++ b/lib/dvb/subtitle.cpp @@ -1113,15 +1113,24 @@ eDVBSubtitleParser::~eDVBSubtitleParser() subtitle_reset(); } +int eDVBSubtitleParser::stop() +{ + if (m_pes_reader) + { + eDebug("disable dvb subtitles"); + return m_pes_reader->stop(); + } + return -1; +} + int eDVBSubtitleParser::start(int pid) { -#if 1 - eDebug("eDVBSubtitleParser::start(%04x)", pid); if (m_pes_reader) + { + eDebug("start dvb subtitles on pid 0x%04x", pid); return m_pes_reader->start(pid); - else - return -1; -#endif + } + return -1; } void eDVBSubtitleParser::connectNewPage(const Slot1 &slot, ePtr &connection) diff --git a/lib/dvb/subtitle.h b/lib/dvb/subtitle.h index 330147ad..44cdd4cb 100644 --- a/lib/dvb/subtitle.h +++ b/lib/dvb/subtitle.h @@ -117,6 +117,7 @@ public: eDVBSubtitleParser(iDVBDemux *demux); virtual ~eDVBSubtitleParser(); int start(int pid); + int stop(); void connectNewPage(const Slot1 &slot, ePtr &connection); private: void subtitle_process_line(subtitle_page *page, int object_id, int line, __u8 *data, int len); diff --git a/lib/dvb/teletext.cpp b/lib/dvb/teletext.cpp index 0515913a..c96fbed9 100644 --- a/lib/dvb/teletext.cpp +++ b/lib/dvb/teletext.cpp @@ -275,6 +275,10 @@ void eDVBTeletextParser::handlePageEnd(int have_pts, const pts_t &pts) void eDVBTeletextParser::setPage(int page) { + if (page > 0) + eDebug("enable teletext subtitle page %d", page); + else + eDebug("disable teletext subtitles"); m_page_number = page; m_page_M = (page >> 8) & 7; /* magazine to look for */ m_page_X = page & 0xFF; /* page number */ diff --git a/lib/python/Plugins/Extensions/Makefile.am b/lib/python/Plugins/Extensions/Makefile.am index 576ca701..4b59325e 100644 --- a/lib/python/Plugins/Extensions/Makefile.am +++ b/lib/python/Plugins/Extensions/Makefile.am @@ -1,3 +1,3 @@ -SUBDIRS = TuxboxPlugins WebInterface FileManager CutListEditor ZappingAlternatives FritzCall +SUBDIRS = TuxboxPlugins FileManager CutListEditor ZappingAlternatives diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index b61436c4..f2f33473 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -1146,10 +1146,12 @@ class InfoBarSubtitles: return "Enable Subtitles: " + name def enableSubtitle(self, subtitles): - print "enable subtitles", subtitles - self.selected_subtitle = subtitles - self.subtitles_enabled = True - + if self.selected_subtitle != subtitles: + print "enable subtitles", subtitles + self.subtitles_enabled = False + self.selected_subtitle = subtitles + self.subtitles_enabled = True + def subtitlesEnabled(self): return self.subtitles_enabled diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 89301de4..2ea7acf1 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -2022,7 +2022,6 @@ RESULT eDVBServicePlay::enableSubtitles(eWidget *parent, PyObject *entry) else { int pid = -page; - eDebug("start dvb subtitles on pid %04x", pid); m_subtitle_parser->start(pid); } @@ -2033,6 +2032,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; } @@ -2091,6 +2100,8 @@ void eDVBServicePlay::newSubtitlePage(const eDVBTeletextSubtitlePage &page) void eDVBServicePlay::checkSubtitleTiming() { // eDebug("checkSubtitleTiming"); + if (!m_subtitle_widget) + return; while (1) { enum { TELETEXT, DVB } type; -- 2.30.2