X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fclipmanager.cpp;h=58d6bedab4c3d8da3eff9076638f1323291728ac;hb=096fad7b4c5b991e1146ca2ea5b6540f55095341;hp=f4d22a5cfc55a587e484abacb8e29b9021b40944;hpb=f33c03640abfbaaf503f742ee0e5f93b9be19cd9;p=kdenlive diff --git a/src/clipmanager.cpp b/src/clipmanager.cpp index f4d22a5c..58d6beda 100644 --- a/src/clipmanager.cpp +++ b/src/clipmanager.cpp @@ -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::iterator i = m_requestedThumbs.begin(); + QMap::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 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 {