]> git.sesse.net Git - kdenlive/blobdiff - src/docclipbase.cpp
Working on FFT based correlation
[kdenlive] / src / docclipbase.cpp
index 65593166321225d0a92a7b377d98427ba6419563..f54eaff7d0d6f8d05e846be388d8650177776418 100644 (file)
@@ -87,11 +87,19 @@ DocClipBase::DocClipBase(ClipManager *clipManager, QDomElement xml, const QStrin
     if (!m_properties.contains("name")) m_properties.insert("name", url.fileName());
 
     m_thumbProd = new KThumb(clipManager, url, m_id, m_properties.value("file_hash"));
+    
+    // Setup timer to trigger audio thumbs creation
+    m_audioTimer.setSingleShot(true);
+    m_audioTimer.setInterval(800);
+    connect(&m_audioTimer, SIGNAL(timeout()), m_thumbProd, SLOT(slotCreateAudioThumbs()));
+    
 }
 
 DocClipBase::~DocClipBase()
 {
+    m_audioTimer.stop();
     delete m_thumbProd;
+    m_thumbProd = NULL;
     qDeleteAll(m_toDeleteProducers);
     m_toDeleteProducers.clear();
     qDeleteAll(m_baseTrackProducers);
@@ -227,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");
@@ -235,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);
@@ -433,9 +442,11 @@ void DocClipBase::cleanupProducers()
         }
     }*/
 
-    qDeleteAll(m_toDeleteProducers);
-    m_toDeleteProducers.clear();
-    m_replaceMutex.unlock();
+    if (!isClean()) {
+      qDeleteAll(m_toDeleteProducers);
+      m_toDeleteProducers.clear();
+      m_replaceMutex.unlock();
+    }
 }
 
 bool DocClipBase::isClean() const
@@ -1098,7 +1109,7 @@ bool DocClipBase::getAudioThumbs()
     if (m_audioThumbCreated) {
         return false;
     }
-    QTimer::singleShot(800, m_thumbProd, SLOT(slotCreateAudioThumbs()));
+    m_audioTimer.start();
     return true;
 }