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 5dc22f63b88ecd2d9ef737a041975649f4aa5a95..67fa850963d246e7dd46c81b14d5b8d0b0a6d352 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/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/FileManager/Makefile
-lib/python/Plugins/Extensions/FritzCall/Makefile
 lib/python/Plugins/Extensions/CutListEditor/Makefile
 lib/python/Plugins/Extensions/ZappingAlternatives/Makefile
 lib/python/Tools/Makefile
 lib/python/Plugins/Extensions/CutListEditor/Makefile
 lib/python/Plugins/Extensions/ZappingAlternatives/Makefile
 lib/python/Tools/Makefile
index 23ea6dce11edaa6d50cbedddd8735b546db25241..0058a51c09869ef52249b10146278cbc750547e2 100644 (file)
@@ -1113,15 +1113,24 @@ eDVBSubtitleParser::~eDVBSubtitleParser()
        subtitle_reset();
 }
 
        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)
 {
 int eDVBSubtitleParser::start(int pid)
 {
-#if 1
-       eDebug("eDVBSubtitleParser::start(%04x)", pid);
        if (m_pes_reader)
        if (m_pes_reader)
+       {
+               eDebug("start dvb subtitles on pid 0x%04x", pid);
                return m_pes_reader->start(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)
 }
 
 void eDVBSubtitleParser::connectNewPage(const Slot1<void, const eDVBSubtitlePage&> &slot, ePtr<eConnection> &connection)
index 330147adb67860757bc6646457f13c1712383461..44cdd4cb7d8a507ca359a8d637bfad25dea8ff88 100644 (file)
@@ -117,6 +117,7 @@ public:
        eDVBSubtitleParser(iDVBDemux *demux);
        virtual ~eDVBSubtitleParser();
        int start(int pid);
        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);
        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 0515913a1066aa81dc0ebdb1b4a19b7f9ce13002..c96fbed9f4015aa03e59f2f2f5531befb9e43edc 100644 (file)
@@ -275,6 +275,10 @@ void eDVBTeletextParser::handlePageEnd(int have_pts, const pts_t &pts)
 
 void eDVBTeletextParser::setPage(int page)
 {
 
 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 */
        m_page_number = page;
        m_page_M = (page >> 8) & 7; /* magazine to look for */
        m_page_X = page & 0xFF;     /* page number */
index 576ca7019694fec562d7c57c3544a3feded46275..4b59325e775631b5e95a18d9884f241e761f74b6 100644 (file)
@@ -1,3 +1,3 @@
-SUBDIRS = TuxboxPlugins WebInterface FileManager CutListEditor ZappingAlternatives FritzCall
+SUBDIRS = TuxboxPlugins FileManager CutListEditor ZappingAlternatives
 
 
 
 
index b61436c44c3df3a826d7ebbdeb85f9576aeeec34..f2f33473fef089288cb5b2f7cc9def0306f6c6f5 100644 (file)
@@ -1146,10 +1146,12 @@ class InfoBarSubtitles:
                return "Enable Subtitles: " + name
 
        def enableSubtitle(self, subtitles):
                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
                
        def subtitlesEnabled(self):
                return self.subtitles_enabled
                
index 89301de471f25fbaddbdeadc1ecc5d7536f4e9a2..2ea7acf1844ba23b3b2ae61385893bdaba061906 100644 (file)
@@ -2022,7 +2022,6 @@ RESULT eDVBServicePlay::enableSubtitles(eWidget *parent, PyObject *entry)
        else
        {
                int pid = -page;
        else
        {
                int pid = -page;
-               eDebug("start dvb subtitles on pid %04x", pid);
                m_subtitle_parser->start(pid);
        }
 
                m_subtitle_parser->start(pid);
        }
 
@@ -2033,6 +2032,16 @@ RESULT eDVBServicePlay::disableSubtitles(eWidget *parent)
 {
        delete m_subtitle_widget;
        m_subtitle_widget = 0;
 {
        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;
 }
 
        return 0;
 }
 
@@ -2091,6 +2100,8 @@ void eDVBServicePlay::newSubtitlePage(const eDVBTeletextSubtitlePage &page)
 void eDVBServicePlay::checkSubtitleTiming()
 {
 //     eDebug("checkSubtitleTiming");
 void eDVBServicePlay::checkSubtitleTiming()
 {
 //     eDebug("checkSubtitleTiming");
+       if (!m_subtitle_widget)
+               return;
        while (1)
        {
                enum { TELETEXT, DVB } type;
        while (1)
        {
                enum { TELETEXT, DVB } type;