]> git.sesse.net Git - kdenlive/blobdiff - src/clipmanager.cpp
Merge branch 'buildsystem'
[kdenlive] / src / clipmanager.cpp
index 0a8083a750f08bbb58c579a6632ddcb4a581e2ce..4c7db5873a2d4e05f9e2ac422abeb005ab01699a 100644 (file)
@@ -19,7 +19,7 @@
 
 
 #include "clipmanager.h"
-#include "addclipcommand.h"
+#include "commands/addclipcommand.h"
 #include "kdenlivesettings.h"
 #include "docclipbase.h"
 #include "kdenlivedoc.h"
@@ -46,7 +46,8 @@ ClipManager::ClipManager(KdenliveDoc *doc) :
     m_audioThumbsQueue(),
     m_doc(doc),
     m_generatingAudioId(),
-    m_abortThumb(false)
+    m_abortThumb(false),
+    m_closing(false)
 {
     m_clipIdCounter = 1;
     m_folderIdCounter = 1;
@@ -65,6 +66,7 @@ ClipManager::ClipManager(KdenliveDoc *doc) :
 
 ClipManager::~ClipManager()
 {
+    m_closing = true;
     m_abortThumb = true;
     m_thumbsThread.waitForFinished();
     m_thumbsMutex.lock();
@@ -123,6 +125,7 @@ void ClipManager::requestThumbs(const QString id, QList <int> frames)
 
 void ClipManager::stopThumbs(const QString &id)
 {
+    if (m_requestedThumbs.isEmpty() || m_closing) return;
     m_abortThumb = true;
     m_thumbsThread.waitForFinished();
     m_thumbsMutex.lock();
@@ -149,13 +152,6 @@ void ClipManager::slotGetThumbs()
         while (!values.isEmpty() && clip->thumbProducer() && !m_abortThumb) {
             clip->thumbProducer()->getThumb(values.takeFirst());
         }
-        if (m_abortThumb) {
-            // keep the requested frames that were not processed
-            m_thumbsMutex.lock();
-            foreach (int frame, values)
-                m_requestedThumbs.insertMulti(producerId, frame);
-            m_thumbsMutex.unlock();
-        }
     }
 }