]> git.sesse.net Git - kdenlive/commitdiff
Only create audio thumbs when they are enabled, clear cache when disabled
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 4 Mar 2008 09:38:34 +0000 (09:38 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 4 Mar 2008 09:38:34 +0000 (09:38 +0000)
svn path=/branches/KDE4/; revision=1996

src/clipmanager.cpp
src/clipmanager.h
src/docclipbase.cpp
src/docclipbase.h
src/mainwindow.cpp
src/projectitem.cpp

index 57f1066bee03ac48d41f047764251137e5ca8631..2dd726255d70f4587514493c4097c76d98d90dac 100644 (file)
 
 ClipManager::ClipManager(KdenliveDoc *doc): m_doc(doc) {
     m_clipIdCounter = 1;
+    m_audioThumbsEnabled = KdenliveSettings::audiothumbnails();
 }
 
 ClipManager::~ClipManager() {
 }
 
+void ClipManager::checkAudioThumbs() {
+    if (m_audioThumbsEnabled == KdenliveSettings::audiothumbnails()) return;
+    m_audioThumbsEnabled = KdenliveSettings::audiothumbnails();
+    for (int i = 0; i < m_clipList.count(); i++) {
+        if (m_audioThumbsEnabled) m_clipList.at(i)->slotRequestAudioThumbs();
+        else m_clipList.at(i)->slotClearAudioCache();
+    }
+}
+
 void ClipManager::setThumbsProgress(KUrl url, int progress) {
     m_doc->setThumbsProgress(url, progress);
 }
index fece4ee52945e9dfd5fbd6d9f13ce8e710f7f725..138c3ffbaf2d50e335e9ec44f45c1d74a96aef53 100644 (file)
@@ -53,6 +53,7 @@ Q_OBJECT public:
     DocClipBase *getClipById(int clipId);
     void slotDeleteClip(uint clipId);
     void setThumbsProgress(KUrl url, int progress);
+    void checkAudioThumbs();
 
 private:   // Private attributes
     /** the list of clips in the document */
@@ -60,6 +61,7 @@ private:   // Private attributes
     /** the document undo stack*/
     KdenliveDoc *m_doc;
     int m_clipIdCounter;
+    bool m_audioThumbsEnabled;
 
 };
 
index 42bcd3b679f46e6a4253b5e75545a51495f63030..47006dcfae1693a962818aa49d81707ba9132621 100644 (file)
@@ -74,6 +74,11 @@ void DocClipBase::slotRequestAudioThumbs() {
     emit getAudioThumbs();
 }
 
+void DocClipBase::slotClearAudioCache() {
+    audioFrameChache.clear();
+    m_audioThumbCreated = false;
+}
+
 KThumb *DocClipBase::thumbProducer() {
     return m_thumbProd;
 }
index 0c42233220a5ac7395c20a211d01acc7cdf1c8ab..0654a58b1d40da3c0d96ee9a7b1f7921026d5a52 100644 (file)
@@ -200,6 +200,8 @@ Q_OBJECT public:
 
     /** Clip is ready to get thumbs */
     void slotRequestAudioThumbs();
+    /** Free cache data */
+    void slotClearAudioCache();
 
 
 private:   // Private attributes
index c625a1d9a8e75b5b8d7ead362f434076cb2147de..5710622ef7312be31814a799cc4e7ecfa50b2e3d 100644 (file)
@@ -493,10 +493,12 @@ void MainWindow::slotPreferences() {
 }
 
 void MainWindow::updateConfiguration() {
+    //TODO: we should apply settings to all projects, not only the current one
     TrackView *currentTab = (TrackView *) m_timelineArea->currentWidget();
     if (currentTab) {
         currentTab->refresh();
         currentTab->projectView()->checkAutoScroll();
+        if (m_activeDocument) m_activeDocument->clipManager()->checkAudioThumbs();
     }
 }
 
index f93c84c3b9da0ba3fa79e971cf1f14bf62e965a7..d861ef5c678a4031e6085a6cd7c85adde4309fa5 100644 (file)
@@ -30,7 +30,7 @@
 
 #include "projectitem.h"
 #include "timecode.h"
-
+#include "kdenlivesettings.h"
 
 const int NameRole = Qt::UserRole;
 const int DurationRole = NameRole + 1;
@@ -222,7 +222,7 @@ void ProjectItem::setProperties(const QMap < QString, QString > &attributes, con
     m_element.setAttribute("resource", attributes["filename"]);
     m_element.setAttribute("type", (int) m_clipType);
 
-    m_clip->slotRequestAudioThumbs();
+    if (KdenliveSettings::audiothumbnails()) m_clip->slotRequestAudioThumbs();
     /*
      if (attributes.contains("height")) {
          m_height = attributes["height"].toInt();