From b71bbe0b32508be57fd6d2314daf3ab5f36b47e1 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Fri, 2 Dec 2011 14:57:58 +0100 Subject: [PATCH] Fix small bug in audio thumbs creation --- src/clipmanager.cpp | 8 +++++--- src/docclipbase.cpp | 8 +++++++- src/docclipbase.h | 1 + src/projectlist.cpp | 1 - 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/clipmanager.cpp b/src/clipmanager.cpp index cdd3eb0d..58d6beda 100644 --- a/src/clipmanager.cpp +++ b/src/clipmanager.cpp @@ -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(); diff --git a/src/docclipbase.cpp b/src/docclipbase.cpp index 5d43417c..28761092 100644 --- a/src/docclipbase.cpp +++ b/src/docclipbase.cpp @@ -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('_')) { diff --git a/src/docclipbase.h b/src/docclipbase.h index 64b78c1c..c2a8bd49 100644 --- a/src/docclipbase.h +++ b/src/docclipbase.h @@ -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();*/ diff --git a/src/projectlist.cpp b/src/projectlist.cpp index cddd5d5b..0618aaf5 100644 --- a/src/projectlist.cpp +++ b/src/projectlist.cpp @@ -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"); -- 2.39.2