]> git.sesse.net Git - kdenlive/commitdiff
Fix small bug in audio thumbs creation
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Fri, 2 Dec 2011 13:57:58 +0000 (14:57 +0100)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Fri, 2 Dec 2011 13:58:42 +0000 (14:58 +0100)
src/clipmanager.cpp
src/docclipbase.cpp
src/docclipbase.h
src/projectlist.cpp

index cdd3eb0df2ad0d209a3b19a5841f4abf20f7bff3..58d6bedab4c3d8da3eff9076638f1323291728ac 100644 (file)
@@ -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();
index 5d43417c3272a852819f25e719a4b77acb0b4e72..287610925e09930063f44787f29e61b6b0da13c3 100644 (file)
@@ -87,7 +87,6 @@ DocClipBase::DocClipBase(ClipManager *clipManager, QDomElement xml, const QStrin
     if (!m_properties.contains("name")) m_properties.insert("name", url.fileName());
 
     m_thumbProd = new KThumb(clipManager, url, m_id, m_properties.value("file_hash"));
-    if (m_clipType & (AV | AUDIO | PLAYLIST)) getAudioThumbs();
 }
 
 DocClipBase::~DocClipBase()
@@ -116,6 +115,12 @@ QPoint DocClipBase::zone() const
 }
 
 
+bool DocClipBase::hasAudioThumb() const
+{
+    if (m_clipType == AUDIO || m_clipType == AV || m_clipType == PLAYLIST) return true;
+    return false;
+}
+
 void DocClipBase::slotClearAudioCache()
 {
     m_audioFrameCache.clear();
@@ -465,6 +470,7 @@ void DocClipBase::setProducer(Mlt::Producer *producer, bool reset, bool readProp
                 m_thumbProd->setProducer(producer);
         }
         else m_thumbProd->setProducer(producer);
+        getAudioThumbs();
     }
     bool updated = false;
     if (id.contains('_')) {
index 64b78c1c227f67b314bd4c40bc854696aca2db46..c2a8bd499e196264cc9e9ff9724429f3d0a9d8e4 100644 (file)
@@ -83,6 +83,7 @@ Q_OBJECT public:
     /** Returns the internal unique id of the clip. */
     const QString &getId() const;
 
+    bool hasAudioThumb() const;
     //KThumb *thumbCreator;
     bool audioThumbCreated() const;
     /*void getClipMainThumb();*/
index cddd5d5bec1f1097c70aed23bcddd80f554ec215..0618aaf5a3211bf8bb6e294a4f30f877774a7303 100644 (file)
@@ -1853,7 +1853,6 @@ void ProjectList::slotReplyGetFileProperties(const QString &clipId, Mlt::Produce
         }
         item->setProperties(properties, metadata);
         clip->setProducer(producer, replace);
-        clip->getAudioThumbs();
 
         // Proxy stuff
         QString size = properties.value("frame_size");