From 51a5213eaf67eb4d674c340f80e2fb8ac0bab8b2 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Sun, 20 Nov 2011 18:00:56 +0100 Subject: [PATCH] Fix thumbnails loading (was loading several times the same ones), improve feedback --- src/clipmanager.cpp | 9 ++++++++- src/clipmanager.h | 1 + src/kdenlivedoc.cpp | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/clipmanager.cpp b/src/clipmanager.cpp index a0687454..2f223465 100644 --- a/src/clipmanager.cpp +++ b/src/clipmanager.cpp @@ -140,19 +140,26 @@ void ClipManager::stopThumbs(const QString &id) void ClipManager::slotGetThumbs() { QMap::iterator i = m_requestedThumbs.begin(); + int max; + int done = 0; while (i != m_requestedThumbs.end() && !m_abortThumb) { QString producerId = i.key(); m_thumbsMutex.lock(); QList values = m_requestedThumbs.values(producerId); - i = m_requestedThumbs.erase(i); + m_requestedThumbs.remove(producerId); + i = m_requestedThumbs.begin(); m_thumbsMutex.unlock(); qSort(values); DocClipBase *clip = getClipById(producerId); if (!clip) continue; + max = m_requestedThumbs.size() + values.count(); while (!values.isEmpty() && clip->thumbProducer() && !m_abortThumb) { clip->thumbProducer()->getThumb(values.takeFirst()); + done++; + if (max > 3) emit displayMessage(i18n("Loading thumbnails"), 100 * done / max); } } + emit displayMessage(QString(), -1); } void ClipManager::checkAudioThumbs() diff --git a/src/clipmanager.h b/src/clipmanager.h index 9ac2cfd2..7f1622e3 100644 --- a/src/clipmanager.h +++ b/src/clipmanager.h @@ -162,6 +162,7 @@ signals: void missingClip(const QString &); void availableClip(const QString &); void checkAllClips(bool displayRatioChanged, bool fpsChanged, QStringList brokenClips); + void displayMessage(const QString &, int); }; #endif diff --git a/src/kdenlivedoc.cpp b/src/kdenlivedoc.cpp index c3aefa91..8102ca68 100644 --- a/src/kdenlivedoc.cpp +++ b/src/kdenlivedoc.cpp @@ -83,6 +83,7 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup m_clipManager = new ClipManager(this); m_autoSaveTimer = new QTimer(this); m_autoSaveTimer->setSingleShot(true); + connect(m_clipManager, SIGNAL(displayMessage(QString, int)), parent, SLOT(slotGotProgressInfo(QString,int))); bool success = false; // init default document properties -- 2.39.2