From: Jean-Baptiste Mardelle Date: Sun, 27 May 2012 16:13:13 +0000 (+0200) Subject: Fix freeze on reloading a missing clip, don't reload twice missing clips that were... X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=b4a0ec0fffc1cbbf21d2ea9fc418885e3b34bce8;p=kdenlive Fix freeze on reloading a missing clip, don't reload twice missing clips that were found --- 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();