]> git.sesse.net Git - kdenlive/blobdiff - src/clipmanager.cpp
Merge branch 'master' of git://anongit.kde.org/kdenlive
[kdenlive] / src / clipmanager.cpp
index f4d22a5cfc55a587e484abacb8e29b9021b40944..58d6bedab4c3d8da3eff9076638f1323291728ac 100644 (file)
@@ -134,22 +134,22 @@ void ClipManager::stopThumbs(const QString &id)
     m_requestedThumbs.remove(id);
     m_thumbsMutex.unlock();
     m_abortThumb = false;
-    if (!m_thumbsThread.isRunning()) {
+    if (!m_thumbsThread.isRunning() && !m_requestedThumbs.isEmpty()) {
         m_thumbsThread = QtConcurrent::run(this, &ClipManager::slotGetThumbs);
     }
 }
 
 void ClipManager::slotGetThumbs()
 {
-    QMap<QString, int>::iterator i = m_requestedThumbs.begin();
+    QMap<QString, int>::const_iterator i;
     int max;
     int done = 0;
-    while (i != m_requestedThumbs.end() && !m_abortThumb) {
-        QString producerId = i.key();
+    while (!m_requestedThumbs.isEmpty() && !m_abortThumb) {
         m_thumbsMutex.lock();
+        i = m_requestedThumbs.constBegin();
+        QString producerId = i.key();
         QList<int> values = m_requestedThumbs.values(producerId);
         m_requestedThumbs.remove(producerId);
-        i = m_requestedThumbs.begin();
         m_thumbsMutex.unlock();
         qSort(values);
         DocClipBase *clip = getClipById(producerId);
@@ -181,17 +181,19 @@ void ClipManager::checkAudioThumbs()
     m_thumbsMutex.lock();
     for (int i = 0; i < m_clipList.count(); i++) {
         DocClipBase *clip = m_clipList.at(i);
-        if (clip->clipType() & (AUDIO | AV | PLAYLIST) && !clip->audioThumbCreated())
+        if (clip->hasAudioThumb() && !clip->audioThumbCreated())
             m_audioThumbsQueue.append(m_clipList.at(i)->getId());
     }
     m_thumbsMutex.unlock();
-    if (!m_audioThumbsThread.isRunning()) m_audioThumbsThread = QtConcurrent::run(this, &ClipManager::slotGetAudioThumbs);
+    if (!m_audioThumbsThread.isRunning() && !m_audioThumbsQueue.isEmpty()) {
+        m_audioThumbsThread = QtConcurrent::run(this, &ClipManager::slotGetAudioThumbs);
+    }
 }
 
 void ClipManager::askForAudioThumb(const QString &id)
 {
     DocClipBase *clip = getClipById(id);
-    if (clip && KdenliveSettings::audiothumbnails() && (clip->clipType() & (AUDIO | AV | PLAYLIST))) {
+    if (clip && KdenliveSettings::audiothumbnails() && (clip->hasAudioThumb())) {
         m_thumbsMutex.lock();
         if (!m_audioThumbsQueue.contains(id)) m_audioThumbsQueue.append(id);
         m_thumbsMutex.unlock();
@@ -280,7 +282,7 @@ void ClipManager::slotGetAudioThumbs()
         for (int z = (int) frame; z < (int)(frame + lengthInFrames) && producer.is_valid() &&  !m_abortAudioThumb; z++) {
             val = (int)((z - frame) / (frame + lengthInFrames) * 100.0);
             if (last_val != val && val > 1) {
-                setThumbsProgress(i18n("Creating thumbnail for %1", url.fileName()), val);
+                setThumbsProgress(i18n("Creating audio thumbnail for %1", url.fileName()), val);
                 last_val = val;
             }
             producer.seek(z);
@@ -303,8 +305,7 @@ void ClipManager::slotGetAudioThumbs()
             delete mlt_frame;
         }
         f.close();
-        //TODO: post 8.2.1, change text to AUDIO thumbnails
-        setThumbsProgress(i18n("Creating thumbnail for %1", url.fileName()), -1);
+        setThumbsProgress(i18n("Creating audio thumbnail for %1", url.fileName()), -1);
         if (m_abortAudioThumb) {
             f.remove();
         } else {