]> git.sesse.net Git - kdenlive/commitdiff
Merge branch 'master' of git://anongit.kde.org/kdenlive
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 4 Dec 2011 11:21:54 +0000 (12:21 +0100)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 4 Dec 2011 11:21:54 +0000 (12:21 +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 6cdc66980c49dcf061770a02c3715527a539905c..65593166321225d0a92a7b377d98427ba6419563 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 896680f33aca73e9d0028b380cb674e4d6ce6a28..6adbd2a27f97a5003688b92c029d0cc2ace99214 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 bf60f9956c5c219bd6f3b96294f517c2cc241ddb..27ddda7ec18921045982c8fe3d7c43e8396d9e5d 100644 (file)
@@ -1852,7 +1852,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");