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);
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();
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);
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 {