]> git.sesse.net Git - kdenlive/commitdiff
Fetch audio thumbs one after another, so that we don't create hundreds of threads:
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 16 Feb 2010 08:01:13 +0000 (08:01 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 16 Feb 2010 08:01:13 +0000 (08:01 +0000)
http://kdenlive.org/mantis/view.php?id=1383

svn path=/trunk/kdenlive/; revision=4309

src/clipmanager.cpp
src/docclipbase.cpp
src/projectitem.cpp
src/projectlist.cpp

index 8521d78dbf6669b8949a962325f36a7397cefb66..056bfce923bedeef0eb2fa0b50fb2c7689cfd2e2 100644 (file)
@@ -50,6 +50,8 @@ ClipManager::~ClipManager()
 {
     qDeleteAll(m_clipList);
     m_clipList.clear();
+    m_audioThumbsQueue.clear();
+    m_generatingAudioId.clear();
 }
 
 void ClipManager::clear()
index 3f886803e0540e630ec1fdbafa1220b410b78b94..9da1405f50da0193d4609d98a21c61a452efc9ec 100644 (file)
@@ -140,7 +140,7 @@ void DocClipBase::slotCreateAudioTimer()
 
 void DocClipBase::askForAudioThumbs()
 {
-    if (m_thumbProd && m_audioTimer) slotGetAudioThumbs();
+    if (m_thumbProd && m_audioTimer) m_thumbProd->askForAudioThumbs(getId());
 }
 
 void DocClipBase::slotClearAudioCache()
index ae1eab2688bd7fcf4123a0137795f6fea226efb5..12b46be2bff0dde6d12d8a3b5fe4dcc3a74f9139 100644 (file)
@@ -44,7 +44,6 @@ ProjectItem::ProjectItem(QTreeWidget * parent, DocClipBase *clip) :
     if (m_clipType != UNKNOWN) slotSetToolTip();
     setText(0, name);
     setText(1, m_clip->description());
-    m_clip->askForAudioThumbs();
     GenTime duration = m_clip->duration();
     if (duration != GenTime()) setData(0, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps()));
     //setFlags(Qt::NoItemFlags);
@@ -64,7 +63,6 @@ ProjectItem::ProjectItem(QTreeWidgetItem * parent, DocClipBase *clip) :
     m_clipType = (CLIPTYPE) m_clip->getProperty("type").toInt();
     setText(0, name);
     setText(1, m_clip->description());
-    m_clip->askForAudioThumbs();
     GenTime duration = m_clip->duration();
     if (duration != GenTime()) setData(0, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps()));
     //setFlags(Qt::NoItemFlags);
@@ -228,7 +226,6 @@ void ProjectItem::setProperties(const QMap < QString, QString > &attributes, con
     }
     m_clip->setProperties(attributes);
     m_clip->setMetadata(metadata);
-    m_clip->askForAudioThumbs();
 
     if (m_clip->description().isEmpty()) {
         if (metadata.contains("description")) {
index 894cd0fa4b751094676111907a86313d938f4792..b3b86a573ed19dcdac937e09b5c0509bfb4a5bfd 100644 (file)
@@ -756,6 +756,7 @@ void ProjectList::slotAddClip(DocClipBase *clip, bool getProperties)
         QDomElement e = clip->toXML().cloneNode().toElement();
         e.removeAttribute("file_hash");
         m_infoQueue.insert(clip->getId(), e);
+        clip->askForAudioThumbs();
         //m_render->getFileProperties(clip->toXML(), clip->getId(), true);
     }
     const QString parent = clip->getProperty("groupid");
@@ -1227,6 +1228,7 @@ void ProjectList::slotReplyGetFileProperties(const QString &clipId, Mlt::Produce
         }
         //Q_ASSERT_X(item->referencedClip(), "void ProjectList::slotReplyGetFileProperties", QString("Item with groupName %1 does not have a clip associated").arg(item->groupName()).toLatin1());
         item->referencedClip()->setProducer(producer, replace);
+        item->referencedClip()->askForAudioThumbs();
         if (!replace && item->data(0, Qt::DecorationRole).isNull()) {
             requestClipThumbnail(clipId);
         }