fix non working timeshift stop when press the TV Button
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Wed, 12 Jul 2006 11:03:52 +0000 (11:03 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Wed, 12 Jul 2006 11:03:52 +0000 (11:03 +0000)
lib/python/Screens/InfoBar.py
lib/python/Screens/InfoBarGenerics.py
lib/service/servicedvb.cpp
lib/service/servicedvb.h

index 5d6e32a..9d3e327 100644 (file)
@@ -45,7 +45,7 @@ class InfoBar(InfoBarShowHide,
                                "showMovies": (self.showMovies, _("Play recorded movies...")),
                                "showRadio": (self.showRadio, _("Show the radio player...")),
                                "showTv": (self.showTv, _("Show the tv player...")),
-                       })
+                       }, prio=2)
                
                for x in HelpableScreen, \
                                InfoBarShowHide, \
index 99819fa..7f9cafe 100644 (file)
@@ -903,9 +903,9 @@ class InfoBarTimeshift:
                print "enable timeshift"
                ts = self.getTimeshift()
                if ts is None:
-                       self.session.open(MessageBox, _("Timeshift not possible!"), MessageBox.TYPE_ERROR)
-                       print "no ts interface"
-                       return
+#                      self.session.open(MessageBox, _("Timeshift not possible!"), MessageBox.TYPE_ERROR)
+#                      print "no ts interface"
+                       return 0;
                
                if self.timeshift_enabled:
                        print "hu, timeshift already enabled?"
@@ -913,7 +913,7 @@ class InfoBarTimeshift:
                        if not ts.startTimeshift():
                                import time
                                self.timeshift_enabled = 1
-                               
+
                                # we remove the "relative time" for now.
                                #self.pvrStateDialog["timeshift"].setRelative(time.time())
                                        
@@ -928,11 +928,11 @@ class InfoBarTimeshift:
 
        def stopTimeshift(self):
                if not self.timeshift_enabled:
-                       return
+                       return 0
                print "disable timeshift"
                ts = self.getTimeshift()
                if ts is None:
-                       return
+                       return 0
                self.session.openWithCallback(self.stopTimeshiftConfirmed, MessageBox, _("Stop Timeshift?"), MessageBox.TYPE_YESNO)
 
        def stopTimeshiftConfirmed(self, confirmed):
@@ -1187,7 +1187,7 @@ class InfoBarInstantRecord:
                except:
                        self.session.open(MessageBox, _("No HDD found or HDD not initialized!"), MessageBox.TYPE_ERROR)
                        return
-       
+
                if self.isInstantRecordRunning():
                        self.session.openWithCallback(self.recordQuestionCallback, ChoiceBox, title=_("A recording is currently running.\nWhat do you want to do?"), list=[(_("stop recording"), "stop"), (_("change recording (duration)"), "changeduration"), (_("add recording (indefinitely)"), "indefinitely"), (_("add recording (stop after current event)"), "event"), (_("add recording (enter recording duration)"), "manualduration"), (_("do nothing"), "no")])
                else:
index 7d737c2..8f28898 100644 (file)
@@ -630,7 +630,7 @@ RESULT eServiceFactoryDVB::lookupService(ePtr<eDVBService> &service, const eServ
 }
 
 eDVBServicePlay::eDVBServicePlay(const eServiceReference &ref, eDVBService *service): 
-       m_reference(ref), m_dvb_service(service), m_is_paused(0)
+       m_reference(ref), m_dvb_service(service), m_have_video_pid(0), m_is_paused(0)
 {
        m_is_primary = 1;
        m_is_pvr = !m_reference.path.empty();
@@ -1031,7 +1031,8 @@ RESULT eDVBServicePlay::subServices(ePtr<iSubserviceList> &ptr)
 RESULT eDVBServicePlay::timeshift(ePtr<iTimeshiftService> &ptr)
 {
        ptr = 0;
-       if (m_timeshift_enabled || !m_is_pvr)
+       if (m_have_video_pid &&  // HACK !!! FIXMEE !! temporary no timeshift on radio services !!
+               (m_timeshift_enabled || !m_is_pvr))
        {
                if (!m_timeshift_enabled)
                {
@@ -1774,6 +1775,7 @@ void eDVBServicePlay::updateDecoder()
                        m_dvb_service->setCacheEntry(eDVBService::cTPID, tpid);
                }
        }
+       m_have_video_pid = (vpid > 0 && vpid < 0x2000);
 }
 
 void eDVBServicePlay::loadCuesheet()
index 29cff4d..8026d65 100644 (file)
@@ -161,6 +161,7 @@ private:
        
        ePtr<iTSMPEGDecoder> m_decoder;
        int m_is_primary;
+       int m_have_video_pid;
        
                /* in timeshift mode, we essentially have two channels, and thus pmt handlers. */
        eDVBServicePMTHandler m_service_handler_timeshift;