]> git.sesse.net Git - kdenlive/commitdiff
Another attempt to secure thumbs creation
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 12 Oct 2011 21:47:47 +0000 (21:47 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 12 Oct 2011 21:47:47 +0000 (21:47 +0000)
svn path=/trunk/kdenlive/; revision=5955

src/kthumb.cpp

index d8a91e80671289bf0d00e3c729e4383515c699c1..7bc4d6f82b419e53153f530f67ce5976bc1d7d70 100644 (file)
@@ -121,7 +121,11 @@ void KThumb::extractImage(int frame, int frame2)
     if (!KdenliveSettings::videothumbnails() || m_producer == NULL) return;
     if (frame != -1 && !m_requestedThumbs.contains(frame)) m_requestedThumbs.append(frame);
     if (frame2 != -1 && !m_requestedThumbs.contains(frame2)) m_requestedThumbs.append(frame2);
-    if (!m_future.isRunning()) m_future = QtConcurrent::run(this, &KThumb::doGetThumbs);
+    if (!m_future.isRunning()) {
+        m_mutex.lock();
+        m_future = QtConcurrent::run(this, &KThumb::doGetThumbs);
+        m_mutex.unlock();
+    }
 }
 
 void KThumb::doGetThumbs()
@@ -473,7 +477,11 @@ void KThumb::queryIntraThumbs(QList <int> missingFrames)
         if (!m_intraFramesQueue.contains(i)) m_intraFramesQueue.append(i);
     }
     qSort(m_intraFramesQueue);
-    if (!m_intra.isRunning()) m_intra = QtConcurrent::run(this, &KThumb::slotGetIntraThumbs);
+    if (!m_intra.isRunning()) {
+        m_mutex.lock();
+        m_intra = QtConcurrent::run(this, &KThumb::slotGetIntraThumbs);
+        m_mutex.unlock();
+    }
 }
 
 void KThumb::slotGetIntraThumbs()