]> git.sesse.net Git - kdenlive/blobdiff - src/docclipbase.cpp
Fix freeze on reloading a missing clip, don't reload twice missing clips that were...
[kdenlive] / src / docclipbase.cpp
index 094e9c714c3eff6d20951e369974c18bc8ba7294..be5a321f3de53e93a981407e500068b3cd0a99d9 100644 (file)
@@ -235,7 +235,7 @@ qulonglong DocClipBase::fileSize() const
 }
 
 // virtual
-QDomElement DocClipBase::toXML() const
+QDomElement DocClipBase::toXML(bool hideTemporaryProperties) const
 {
     QDomDocument doc;
     QDomElement clip = doc.createElement("producer");
@@ -243,6 +243,7 @@ QDomElement DocClipBase::toXML() const
     QMapIterator<QString, QString> i(m_properties);
     while (i.hasNext()) {
         i.next();
+        if (hideTemporaryProperties && i.key().startsWith("_")) continue;
         if (!i.value().isEmpty()) clip.setAttribute(i.key(), i.value());
     }
     doc.appendChild(clip);
@@ -404,7 +405,7 @@ void DocClipBase::deleteProducers()
 {
     if (m_thumbProd) m_thumbProd->clearProducer();
     
-    if (numReferences() > 0) {
+    if (numReferences() > 0 && (!m_baseTrackProducers.isEmpty() || m_videoOnlyProducer || !m_audioTrackProducers.isEmpty())) {
         // Clip is used in timeline, delay producers deletion
         if (m_videoOnlyProducer) m_toDeleteProducers.append(m_videoOnlyProducer);
         for (int i = 0; i < m_baseTrackProducers.count(); i++) {
@@ -650,6 +651,7 @@ Mlt::Producer *DocClipBase::getCloneProducer()
     return prod;
 }
 
+
 Mlt::Producer *DocClipBase::getProducer(int track)
 {
     QMutexLocker locker(&m_producerMutex);