]> git.sesse.net Git - kdenlive/commitdiff
Fix thumbnails loading (was loading several times the same ones), improve feedback
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 20 Nov 2011 17:00:56 +0000 (18:00 +0100)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 20 Nov 2011 17:06:21 +0000 (18:06 +0100)
src/clipmanager.cpp
src/clipmanager.h
src/kdenlivedoc.cpp

index a06874543bb3d5dbded0a5ea7c970fd28497b7b6..2f223465292d9271d860cea852222987b786adff 100644 (file)
@@ -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()
index 9ac2cfd2dbcc1bf9e25d8bea670b5df2b7f48a83..7f1622e33c48f3fba9e3aa948a285a3130fce51a 100644 (file)
@@ -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
index c3aefa9195142ecee9329d62527db447f3f3a9e8..8102ca681918534ca9bd7758d54239d9ad056af1 100644 (file)
@@ -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