From: Jean-Baptiste M. <jb...@kd...> - 2011-11-20 17:02:02
|
Git commit 515f48d013c2646680fd386406164a5f92d5568d by Jean-Baptiste Mardelle. Committed on 20/11/2011 at 18:00. Pushed by mardelle into branch 'v0.8.2'. Fix thumbnails loading (was loading several times the same ones), improve feedback M +8 -1 src/clipmanager.cpp M +1 -0 src/clipmanager.h M +1 -0 src/kdenlivedoc.cpp http://commits.kde.org/kdenlive/515f48d013c2646680fd386406164a5f92d5568d diff --git a/src/clipmanager.cpp b/src/clipmanager.cpp index d735912..fe00794 100644 --- a/src/clipmanager.cpp +++ b/src/clipmanager.cpp @@ -140,19 +140,26 @@ void ClipManager::stopThumbs(const QString &id) void ClipManager::slotGetThumbs() { QMap<QString, int>::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<int> 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 9ac2cfd..7f1622e 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 7064f2c..d6b41e8 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 |