Merge branch 'master' of /home/tmbinc/enigma2-git into tmbinc/FixTimingBugs
authorFelix Domke <tmbinc@elitedvb.net>
Fri, 13 Feb 2009 13:47:32 +0000 (14:47 +0100)
committerFelix Domke <tmbinc@elitedvb.net>
Fri, 13 Feb 2009 13:47:32 +0000 (14:47 +0100)
Conflicts:

lib/python/Components/Converter/StringList.py

1  2 
lib/python/Components/Converter/StringList.py
lib/service/servicedvb.cpp

@@@ -19,11 -19,8 +19,11 @@@ class StringList(Converter)
        def selectionChanged(self, index):
                self.source.selectionChanged(index)
                # update all non-master targets
 +              print "changed selection in listbox!"
                for x in self.downstream_elements:
 +                      print "downstream element", x
                        if x is not self.master:
 +                              print "is not master, so update to index", index
                                x.index = index
  
        @cached
@@@ -48,4 -45,4 +48,4 @@@
        index = property(getIndex, setIndex)
  
        def entry_changed(self, index):
-               self.downstream_elements.entry_changed(index)
+               self.downstream_elements.entry_changed(index)
@@@ -506,7 -506,6 +506,7 @@@ RESULT eDVBPVRServiceOfflineOperations:
  
        res.push_back(m_ref.path + ".meta");
        res.push_back(m_ref.path + ".ap");
 +      res.push_back(m_ref.path + ".sc");
        res.push_back(m_ref.path + ".cuts");
        std::string tmp = m_ref.path;
        tmp.erase(m_ref.path.length()-3);
@@@ -1006,10 -1005,7 +1006,10 @@@ void eDVBServicePlay::serviceEventTimes
                break;
        case eDVBServicePMTHandler::eventEOF:
                if ((!m_is_paused) && (m_skipmode >= 0))
 +              {
 +                      eDebug("timeshift EOF, so let's go live");
                        switchToLive();
 +              }
                break;
        }
  }
@@@ -1132,9 -1128,6 +1132,9 @@@ RESULT eDVBServicePlay::pause(ePtr<iPau
  
  RESULT eDVBServicePlay::setSlowMotion(int ratio)
  {
 +      assert(ratio); /* The API changed: instead of calling setSlowMotion(0), call play! */
 +      eDebug("eDVBServicePlay::setSlowMotion(%d)", ratio);
 +      setFastForward_internal(0);
        if (m_decoder)
                return m_decoder->setSlowMotion(ratio);
        else
  
  RESULT eDVBServicePlay::setFastForward(int ratio)
  {
 +      eDebug("eDVBServicePlay::setFastForward(%d)", ratio);
 +      assert(ratio);
 +      return setFastForward_internal(ratio);
 +}
 +
 +RESULT eDVBServicePlay::setFastForward_internal(int ratio)
 +{
        int skipmode, ffratio;
        
        if (ratio > 8)
        
        if (!m_decoder)
                return -1;
 -
 -      return m_decoder->setFastForward(ffratio);
 +              
 +      if (ffratio == 0)
 +              ; /* return m_decoder->play(); is done in caller*/
 +      else if (ffratio != 1)
 +              return m_decoder->setFastForward(ffratio);
 +      else
 +              return m_decoder->setTrickmode();
  }
  
  RESULT eDVBServicePlay::seek(ePtr<iSeekableService> &ptr)
@@@ -1215,24 -1196,20 +1215,24 @@@ RESULT eDVBServicePlay::getLength(pts_
  
  RESULT eDVBServicePlay::pause()
  {
 -      if (!m_is_paused && m_decoder)
 +      eDebug("eDVBServicePlay::pause");
 +      setFastForward_internal(0);
 +      if (m_decoder)
        {
                m_is_paused = 1;
 -              return m_decoder->freeze(0);
 +              return m_decoder->pause();
        } else
                return -1;
  }
  
  RESULT eDVBServicePlay::unpause()
  {
 -      if (m_is_paused && m_decoder)
 +      eDebug("eDVBServicePlay::unpause");
 +      setFastForward_internal(0);
 +      if (m_decoder)
        {
                m_is_paused = 0;
 -              return m_decoder->unfreeze();
 +              return m_decoder->play();
        } else
                return -1;
  }
@@@ -1314,8 -1291,9 +1314,8 @@@ RESULT eDVBServicePlay::getPlayPosition
  
  RESULT eDVBServicePlay::setTrickmode(int trick)
  {
 -      if (m_decoder)
 -              m_decoder->setTrickmode(trick);
 -      return 0;
 +              /* currently unimplemented */
 +      return -1;
  }
  
  RESULT eDVBServicePlay::isCurrentlySeekable()
@@@ -1601,7 -1579,7 +1601,7 @@@ RESULT eDVBServicePlay::selectTrack(uns
  {
        int ret = selectAudioStream(i);
  
 -      if (m_decoder->start())
 +      if (m_decoder->play())
                return -5;
  
        return ret;
@@@ -1877,20 -1855,7 +1877,7 @@@ PyObject *eDVBServiceBase::getTranspond
                {
                        ePtr<iDVBFrontend> fe;
                        if(!channel->getFrontend(fe))
-                       {
                                fe->getTransponderData(ret, original);
-                               ePtr<iDVBFrontendParameters> feparm;
-                               channel->getCurrentFrontendParameters(feparm);
-                               if (feparm)
-                               {
-                                       eDVBFrontendParametersSatellite osat;
-                                       if (!feparm->getDVBS(osat))
-                                       {
-                                               PutToDict(ret, "orbital_position", osat.orbital_position);
-                                               PutToDict(ret, "polarization", osat.polarisation);
-                                       }
-                               }
-                       }
                }
        }
        else
@@@ -2146,8 -2111,6 +2133,8 @@@ void eDVBServicePlay::switchToLive(
        if (!m_timeshift_active)
                return;
        
 +      eDebug("SwitchToLive");
 +      
        m_cue = 0;
        m_decoder = 0;
        m_decode_demux = 0;
@@@ -2189,7 -2152,7 +2176,7 @@@ void eDVBServicePlay::switchToTimeshift
        r.path = m_timeshift_file;
  
        m_cue = new eCueSheet();
 -      m_service_handler_timeshift.tune(r, 1, m_cue); /* use the decoder demux for everything */
 +      m_service_handler_timeshift.tune(r, 1, m_cue, 0, m_dvb_service); /* use the decoder demux for everything */
  
        eDebug("eDVBServicePlay::switchToTimeshift, in pause mode now.");
        pause();
@@@ -2318,12 -2281,13 +2305,12 @@@ void eDVBServicePlay::updateDecoder(
  
                m_teletext_parser->start(program.textPid);
  
 -              if (!m_is_primary)
 -                      m_decoder->setTrickmode(1);
 -
 -              if (m_is_paused)
 -                      m_decoder->preroll();
 +/*            if (!m_is_primary)
 +                      m_decoder->setTrickmode();
 +              else */ if (m_is_paused)
 +                      m_decoder->pause();
                else
 -                      m_decoder->start();
 +                      m_decoder->play();
  
                if (vpid > 0 && vpid < 0x2000)
                        ;
                        m_dvb_service->setCacheEntry(eDVBService::cPCRPID, pcrpid);
                        m_dvb_service->setCacheEntry(eDVBService::cTPID, tpid);
                }
 -      }       
 +      }
        m_have_video_pid = (vpid > 0 && vpid < 0x2000);
  }