From b4a0ec0fffc1cbbf21d2ea9fc418885e3b34bce8 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Sun, 27 May 2012 18:13:13 +0200 Subject: [PATCH] Fix freeze on reloading a missing clip, don't reload twice missing clips that were found --- src/clipmanager.cpp | 4 +++- src/docclipbase.cpp | 3 ++- src/projectlist.cpp | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/clipmanager.cpp b/src/clipmanager.cpp index 608087f4..ed7cbb0f 100644 --- a/src/clipmanager.cpp +++ b/src/clipmanager.cpp @@ -54,7 +54,9 @@ ClipManager::ClipManager(KdenliveDoc *doc) : m_modifiedTimer.setInterval(1500); connect(&m_fileWatcher, SIGNAL(dirty(const QString &)), this, SLOT(slotClipModified(const QString &))); connect(&m_fileWatcher, SIGNAL(deleted(const QString &)), this, SLOT(slotClipMissing(const QString &))); - connect(&m_fileWatcher, SIGNAL(created(const QString &)), this, SLOT(slotClipAvailable(const QString &))); + + // Seems like a dirty signal is emitted anyways when a watched file is created, so don't react twice. + //connect(&m_fileWatcher, SIGNAL(created(const QString &)), this, SLOT(slotClipAvailable(const QString &))); connect(&m_modifiedTimer, SIGNAL(timeout()), this, SLOT(slotProcessModifiedClips())); #if KDE_IS_VERSION(4,5,0) diff --git a/src/docclipbase.cpp b/src/docclipbase.cpp index f54eaff7..be5a321f 100644 --- a/src/docclipbase.cpp +++ b/src/docclipbase.cpp @@ -405,7 +405,7 @@ void DocClipBase::deleteProducers() { if (m_thumbProd) m_thumbProd->clearProducer(); - if (numReferences() > 0) { + if (numReferences() > 0 && (!m_baseTrackProducers.isEmpty() || m_videoOnlyProducer || !m_audioTrackProducers.isEmpty())) { // Clip is used in timeline, delay producers deletion if (m_videoOnlyProducer) m_toDeleteProducers.append(m_videoOnlyProducer); for (int i = 0; i < m_baseTrackProducers.count(); i++) { @@ -651,6 +651,7 @@ Mlt::Producer *DocClipBase::getCloneProducer() return prod; } + Mlt::Producer *DocClipBase::getProducer(int track) { QMutexLocker locker(&m_producerMutex); diff --git a/src/projectlist.cpp b/src/projectlist.cpp index b3d5f517..ff9d1748 100644 --- a/src/projectlist.cpp +++ b/src/projectlist.cpp @@ -693,7 +693,7 @@ void ProjectList::slotReloadClip(const QString &id) item->referencedClip()->setPlaceHolder(true); item->setProperty("file_hash", QString()); } else if (t == IMAGE) { - clip->getProducer()->set("force_reload", 1); + //clip->getProducer() clip->getProducer()->set("force_reload", 1); } QDomElement e = item->toXml(); -- 2.39.2