Merge branch 'master' of /home/tmbinc/enigma2-git
authorFelix Domke <tmbinc@elitedvb.net>
Sun, 19 Apr 2009 21:33:44 +0000 (23:33 +0200)
committerFelix Domke <tmbinc@elitedvb.net>
Sun, 19 Apr 2009 21:33:44 +0000 (23:33 +0200)
1  2 
lib/service/servicedvb.cpp

index 44a22ea9265dd8249968d61b8f5e1987f03cf177,b3ce13daf6337b401c65f08f287e766f23f641df..0e6229c5126d582e68faf72409b82d5ad2fe0d00
@@@ -1184,7 -1184,7 +1184,7 @@@ RESULT eDVBServicePlay::setFastForward_
                return -1;
                
        if (ffratio == 0)
-               return 0; /* return m_decoder->play(); is done in caller*/
+               ; /* return m_decoder->play(); is done in caller*/
        else if (ffratio != 1)
                return m_decoder->setFastForward(ffratio);
        else
@@@ -1602,7 -1602,7 +1602,7 @@@ RESULT eDVBServicePlay::selectTrack(uns
  {
        int ret = selectAudioStream(i);
  
-       if (m_decoder->play())
+       if (m_decoder->set())
                return -5;
  
        return ret;
@@@ -1684,8 -1684,6 +1684,6 @@@ int eDVBServicePlay::selectAudioStream(
                eDebug("set audio pid failed");
                return -4;
        }
-       
-       m_decoder->set();
  
                /* if we are not in PVR mode, timeshift is not active and we are not in pip mode, check if we need to enable the rds reader */
        if (!(m_is_pvr || m_timeshift_active || !m_is_primary))
                        m_dvb_service->setCacheEntry(eDVBService::cAPID, apid);
                        m_dvb_service->setCacheEntry(eDVBService::cAC3PID, -1);
                }
-               else
+               else if (apidtype == eDVBAudio::aAC3)
                {
                        m_dvb_service->setCacheEntry(eDVBService::cAPID, -1);
                        m_dvb_service->setCacheEntry(eDVBService::cAC3PID, apid);
                }
+               else
+               {
+                       m_dvb_service->setCacheEntry(eDVBService::cAPID, -1);
+                       m_dvb_service->setCacheEntry(eDVBService::cAC3PID, -1);
+               }
        }
  
        h.resetCachedProgram();
@@@ -2441,16 -2444,11 +2444,16 @@@ void eDVBServicePlay::cutlistToCuesheet
                
        std::multiset<cueEntry>::iterator i(m_cue_entries.begin());
        
 +      int have_any_span = 0;
 +      
        while (1)
        {
                if (i == m_cue_entries.end())
 +              {
 +                      if (!have_any_span)
 +                              break;
                        out = length;
 -              else {
 +              else {
                        if (i->what == 0) /* in */
                        {
                                in = i++->where;
                        out = length;
                
                if (in < out)
 +              {
 +                      have_any_span = 1;
                        m_cue->addSourceSpan(in, out);
 +              }
                
                in = length;