X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Frenderer.cpp;h=c98ee4fbbee6440cbeaf0b5f0d089279050a8a9c;hb=6bdad039d35decd64c73006c47c297496d53cd12;hp=272acaf5ce5e7b55f04b95a38ffb360dc1198f89;hpb=d4eba74b4e5bf7febef259fd83cf6516d233bc8f;p=kdenlive diff --git a/src/renderer.cpp b/src/renderer.cpp index 272acaf5..c98ee4fb 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -584,13 +584,15 @@ void Render::getFileProperties(const QDomElement &xml, const QString &clipId, in m_requestList.removeAll(info); m_requestList.append(info); m_infoMutex.unlock(); - if (!m_infoThread.isRunning()) + if (!m_infoThread.isRunning()) { m_infoThread = QtConcurrent::run(this, &Render::processFileProperties); + } } void Render::forceProcessing(const QString &id) { - m_infoMutex.lock(); + if (m_processingClipId == id) return; + QMutexLocker lock(&m_infoMutex); for (int i = 0; i < m_requestList.count(); i++) { requestClipInfo info = m_requestList.at(i); if (info.clipId == id) { @@ -602,33 +604,29 @@ void Render::forceProcessing(const QString &id) } } } - m_infoMutex.unlock(); } int Render::processingItems() { - m_infoMutex.lock(); + QMutexLocker lock(&m_infoMutex); int count = m_requestList.count(); if (!m_processingClipId.isEmpty()) { // one clip is currently processed count++; } - m_infoMutex.unlock(); return count; } bool Render::isProcessing(const QString &id) { if (m_processingClipId == id) return true; - m_infoMutex.lock(); + QMutexLocker lock(&m_infoMutex); for (int i = 0; i < m_requestList.count(); i++) { requestClipInfo info = m_requestList.at(i); if (info.clipId == id) { - m_infoMutex.unlock(); return true; } } - m_infoMutex.unlock(); return false; } @@ -639,8 +637,9 @@ void Render::processFileProperties() while (!m_requestList.isEmpty()) { m_infoMutex.lock(); info = m_requestList.takeFirst(); - m_infoMutex.unlock(); m_processingClipId = info.clipId; + m_infoMutex.unlock(); + QString path; bool proxyProducer; if (info.xml.hasAttribute("proxy") && info.xml.attribute("proxy") != "-") { @@ -782,9 +781,9 @@ void Render::processFileProperties() Mlt::Frame *frame = producer->get_frame(); if (frame && frame->is_valid()) { QImage img = KThumb::getFrame(frame, imageWidth, fullWidth, info.imageHeight); - delete frame; emit replyGetImage(info.clipId, img); } + if (frame) delete frame; } m_processingClipId.clear(); emit replyGetFileProperties(info.clipId, producer, stringMap(), stringMap(), info.replaceProducer); @@ -914,6 +913,9 @@ void Render::processFileProperties() int video_max = 0; int default_audio = producer->get_int("audio_index"); int audio_max = 0; + + int scan = producer->get_int("meta.media.progressive"); + filePropertyMap["progressive"] = QString::number(scan); // Find maximum stream index values for (int ix = 0; ix < producer->get_int("meta.media.nb_streams"); ix++) {