fix 'start'/'stop'/'select other' subtitles
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Wed, 25 Oct 2006 21:58:42 +0000 (21:58 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Wed, 25 Oct 2006 21:58:42 +0000 (21:58 +0000)
configure.ac
lib/dvb/subtitle.cpp
lib/dvb/subtitle.h
lib/dvb/teletext.cpp
lib/python/Plugins/Extensions/Makefile.am
lib/python/Screens/InfoBarGenerics.py
lib/service/servicedvb.cpp

index 5dc22f6..67fa850 100644 (file)
@@ -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
index 23ea6dc..0058a51 100644 (file)
@@ -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<void, const eDVBSubtitlePage&> &slot, ePtr<eConnection> &connection)
index 330147a..44cdd4c 100644 (file)
@@ -117,6 +117,7 @@ public:
        eDVBSubtitleParser(iDVBDemux *demux);
        virtual ~eDVBSubtitleParser();
        int start(int pid);
+       int stop();
        void connectNewPage(const Slot1<void, const eDVBSubtitlePage&> &slot, ePtr<eConnection> &connection);
 private:
        void subtitle_process_line(subtitle_page *page, int object_id, int line, __u8 *data, int len);
index 0515913..c96fbed 100644 (file)
@@ -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 */
index 576ca70..4b59325 100644 (file)
@@ -1,3 +1,3 @@
-SUBDIRS = TuxboxPlugins WebInterface FileManager CutListEditor ZappingAlternatives FritzCall
+SUBDIRS = TuxboxPlugins FileManager CutListEditor ZappingAlternatives
 
 
index b61436c..f2f3347 100644 (file)
@@ -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
                
index 89301de..2ea7acf 100644 (file)
@@ -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;