X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fprojectlist.cpp;h=0bdbba1b97a9808fcb8ae7501808fd57da1e2ecd;hb=db3a514547826b7d83b336f0bd93eed7c25c6b3c;hp=17b247dae712ad9e0e05af37e2153f144670a1f6;hpb=4be9030ba656aeb05ac8b28aaae5aa79cdf461d5;p=kdenlive diff --git a/src/projectlist.cpp b/src/projectlist.cpp index 17b247da..0bdbba1b 100644 --- a/src/projectlist.cpp +++ b/src/projectlist.cpp @@ -360,6 +360,7 @@ void ProjectList::slotAddClip(DocClipBase *clip, bool getProperties) { } void ProjectList::requestClipInfo(const QDomElement xml, const QString id) { + kDebug() << " PRG LIST REQUEST CLP INFO: " << id; m_infoQueue.insert(id, xml); listView->setEnabled(false); if (m_infoQueue.count() == 1) QTimer::singleShot(300, this, SLOT(slotProcessNextClipInQueue())); @@ -404,7 +405,11 @@ void ProjectList::updateAllClips() { } requestClipInfo(clip->toXML(), clip->getId()); } else { - requestClipThumbnail(item->clipId()); + QString cachedPixmap = m_doc->projectFolder().path() + "/thumbs/" + item->getClipHash() + ".png"; + if (QFile::exists(cachedPixmap)) { + //kDebug()<<"// USING CACHED PIX: "<setIcon(0, QPixmap(cachedPixmap)); + } else requestClipThumbnail(item->clipId()); item->changeDuration(item->referencedClip()->producer()->get_playtime()); } item->setData(1, UsageRole, QString::number(item->numReferences())); @@ -598,6 +603,7 @@ void ProjectList::slotRefreshClipThumbnail(ProjectItem *item, bool update) { if (clip->clipType() == AUDIO) pix = KIcon("audio-x-generic").pixmap(QSize(width, height)); else pix = item->referencedClip()->thumbProducer()->extractImage(item->referencedClip()->getClipThumbFrame(), width, height); item->setIcon(0, pix); + m_doc->cachePixmap(item->getClipHash(), pix); if (update) emit projectModified(); if (!m_thumbnailQueue.isEmpty()) QTimer::singleShot(300, this, SLOT(slotProcessNextThumbnail())); } @@ -615,7 +621,10 @@ void ProjectList::slotReplyGetFileProperties(const QString &clipId, Mlt::Produce void ProjectList::slotReplyGetImage(const QString &clipId, int pos, const QPixmap &pix, int w, int h) { ProjectItem *item = getItemById(clipId); - if (item) item->setIcon(0, pix); + if (item) { + item->setIcon(0, pix); + m_doc->cachePixmap(item->getClipHash(), pix); + } } ProjectItem *ProjectList::getItemById(const QString &id) {