]> git.sesse.net Git - kdenlive/commitdiff
Fix audio producers not correctly handled, resulting in sound cracks:
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 27 Jun 2011 11:10:16 +0000 (11:10 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 27 Jun 2011 11:10:16 +0000 (11:10 +0000)
http://kdenlive.org/mantis/view.php?id=2196

svn path=/trunk/kdenlive/; revision=5735

src/docclipbase.cpp

index 964c8186b71cf22e9670056cbb8be538e6b071d7..9df4daec77ecb5b992d1cef5d87d72e58733ce9b 100644 (file)
@@ -538,14 +538,17 @@ Mlt::Producer *DocClipBase::audioProducer(int track)
         int i;
         for (i = 0; i < m_audioTrackProducers.count(); i++)
             if (m_audioTrackProducers.at(i) != NULL) break;
-        if (i < m_audioTrackProducers.count()) {
-            // Could not find a valid producer for that clip, check in 
+        Mlt::Producer *base;
+        if (i >= m_audioTrackProducers.count()) {
+            // Could not find a valid producer for that clip
             m_producerMutex.unlock();
-            return m_audioTrackProducers.at(i);
+            base = producer();
+            if (base == NULL) {
+                return NULL;
+            }
+            m_producerMutex.lock();
         }
-        m_producerMutex.unlock();
-        Mlt::Producer *base = producer();
-        m_producerMutex.lock();
+        else base = m_audioTrackProducers.at(i);
         m_audioTrackProducers[track] = cloneProducer(base);
         adjustProducerProperties(m_audioTrackProducers.at(track), QString(getId() + '_' + QString::number(track) + "_audio"), false, true);
     }