From 43347839feb2bd83cac3306a4771dc97df37d804 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Tue, 4 Mar 2008 09:38:34 +0000 Subject: [PATCH] Only create audio thumbs when they are enabled, clear cache when disabled svn path=/branches/KDE4/; revision=1996 --- src/clipmanager.cpp | 10 ++++++++++ src/clipmanager.h | 2 ++ src/docclipbase.cpp | 5 +++++ src/docclipbase.h | 2 ++ src/mainwindow.cpp | 2 ++ src/projectitem.cpp | 4 ++-- 6 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/clipmanager.cpp b/src/clipmanager.cpp index 57f1066b..2dd72625 100644 --- a/src/clipmanager.cpp +++ b/src/clipmanager.cpp @@ -26,11 +26,21 @@ 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); } diff --git a/src/clipmanager.h b/src/clipmanager.h index fece4ee5..138c3ffb 100644 --- a/src/clipmanager.h +++ b/src/clipmanager.h @@ -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; }; diff --git a/src/docclipbase.cpp b/src/docclipbase.cpp index 42bcd3b6..47006dcf 100644 --- a/src/docclipbase.cpp +++ b/src/docclipbase.cpp @@ -74,6 +74,11 @@ void DocClipBase::slotRequestAudioThumbs() { emit getAudioThumbs(); } +void DocClipBase::slotClearAudioCache() { + audioFrameChache.clear(); + m_audioThumbCreated = false; +} + KThumb *DocClipBase::thumbProducer() { return m_thumbProd; } diff --git a/src/docclipbase.h b/src/docclipbase.h index 0c422332..0654a58b 100644 --- a/src/docclipbase.h +++ b/src/docclipbase.h @@ -200,6 +200,8 @@ Q_OBJECT public: /** Clip is ready to get thumbs */ void slotRequestAudioThumbs(); + /** Free cache data */ + void slotClearAudioCache(); private: // Private attributes diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index c625a1d9..5710622e 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -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(); } } diff --git a/src/projectitem.cpp b/src/projectitem.cpp index f93c84c3..d861ef5c 100644 --- a/src/projectitem.cpp +++ b/src/projectitem.cpp @@ -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(); -- 2.39.2