don't add any source span if no cutlist defined, because we don't have an 'infinite...
[enigma2.git] / lib / service / servicedvb.cpp
index b92965da5a78c6d5d61199b8e5cdd1d25b6abccb..44a22ea9265dd8249968d61b8f5e1987f03cf177 100644 (file)
@@ -1133,7 +1133,7 @@ RESULT eDVBServicePlay::pause(ePtr<iPauseableService> &ptr)
 
 RESULT eDVBServicePlay::setSlowMotion(int ratio)
 {
-       assert(ratio); /* The API changed: instead of calling setSlowMotion(0), call play! */
+       ASSERT(ratio); /* The API changed: instead of calling setSlowMotion(0), call play! */
        eDebug("eDVBServicePlay::setSlowMotion(%d)", ratio);
        setFastForward_internal(0);
        if (m_decoder)
@@ -1145,7 +1145,7 @@ RESULT eDVBServicePlay::setSlowMotion(int ratio)
 RESULT eDVBServicePlay::setFastForward(int ratio)
 {
        eDebug("eDVBServicePlay::setFastForward(%d)", ratio);
-       assert(ratio);
+       ASSERT(ratio);
        return setFastForward_internal(ratio);
 }
 
@@ -1184,7 +1184,7 @@ RESULT eDVBServicePlay::setFastForward_internal(int ratio)
                return -1;
                
        if (ffratio == 0)
-               ; /* return m_decoder->play(); is done in caller*/
+               return 0; /* return m_decoder->play(); is done in caller*/
        else if (ffratio != 1)
                return m_decoder->setFastForward(ffratio);
        else
@@ -1684,6 +1684,8 @@ int eDVBServicePlay::selectAudioStream(int i)
                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))
@@ -2439,11 +2441,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;
@@ -2467,7 +2474,10 @@ void eDVBServicePlay::cutlistToCuesheet()
                        out = length;
                
                if (in < out)
+               {
+                       have_any_span = 1;
                        m_cue->addSourceSpan(in, out);
+               }
                
                in = length;