setBrush(QColor(colour.left(7)));
} else if (m_clipType == IMAGE || m_clipType == TEXT) {
setBrush(QColor(141, 166, 215));
- m_startPix = KThumb::getImage(KUrl(clip->getProperty("resource")), (int)(KdenliveSettings::trackheight() * KdenliveSettings::project_display_ratio()), KdenliveSettings::trackheight());
+ //m_startPix = KThumb::getImage(KUrl(clip->getProperty("resource")), (int)(KdenliveSettings::trackheight() * KdenliveSettings::project_display_ratio()), KdenliveSettings::trackheight());
} else if (m_clipType == AUDIO) {
setBrush(QColor(141, 215, 166));
connect(clip, SIGNAL(gotAudioData()), this, SLOT(slotGotAudioData()));
ClipItem *ClipItem::clone(ItemInfo info) const
{
ClipItem *duplicate = new ClipItem(m_clip, info, m_fps, m_speed);
- if (info.cropStart == m_cropStart) duplicate->slotSetStartThumb(m_startPix);
- if (info.cropStart + (info.endPos - info.startPos) == m_cropStart + m_cropDuration) duplicate->slotSetEndThumb(m_endPix);
- kDebug() << "// CLoning clip: " << (info.cropStart + (info.endPos - info.startPos)).frames(m_fps) << ", CURRENT end: " << (cropStart() + duration()).frames(m_fps);
+ if (m_clipType == IMAGE || m_clipType == TEXT) duplicate->slotSetStartThumb(m_startPix);
+ else {
+ if (info.cropStart == m_cropStart) duplicate->slotSetStartThumb(m_startPix);
+ if (info.cropStart + (info.endPos - info.startPos) == m_cropStart + m_cropDuration) duplicate->slotSetEndThumb(m_endPix);
+ }
+ //kDebug() << "// CLoning clip: " << (info.cropStart + (info.endPos - info.startPos)).frames(m_fps) << ", CURRENT end: " << (cropStart() + duration()).frames(m_fps);
duplicate->setEffectList(m_effectList.clone());
duplicate->setVideoOnly(m_videoOnly);
duplicate->setAudioOnly(m_audioOnly);
return effectAt(m_selectedEffect);
}
-void ClipItem::resetThumbs()
+void ClipItem::resetThumbs(bool clearExistingThumbs)
{
- m_startPix = QPixmap();
- m_endPix = QPixmap();
+ if (clearExistingThumbs) {
+ m_startPix = QPixmap();
+ m_endPix = QPixmap();
+ m_audioThumbCachePic.clear();
+ }
slotFetchThumbs();
- m_audioThumbCachePic.clear();
}
QString colour = m_clip->getProperty("colour");
colour = colour.replace(0, 2, "#");
setBrush(QColor(colour.left(7)));
- } else resetThumbs();
+ } else resetThumbs(checkDuration);
}
void ClipItem::slotFetchThumbs()
{
+ if (m_clipType == IMAGE || m_clipType == TEXT) {
+ if (m_startPix.isNull()) {
+ m_startPix = KThumb::getImage(KUrl(m_clip->getProperty("resource")), (int)(KdenliveSettings::trackheight() * KdenliveSettings::project_display_ratio()), KdenliveSettings::trackheight());
+ update();
+ }
+ return;
+ }
+
if (m_endPix.isNull() && m_startPix.isNull()) {
m_startThumbRequested = true;
m_endThumbRequested = true;
item = (ClipItem*) itemList.at(i);
item->setRect(0, 0, item->rect().width(), m_tracksHeight - 1);
item->setPos((qreal) item->startPos().frames(m_document->fps()), (qreal) item->track() * m_tracksHeight + 1);
- item->resetThumbs();
+ item->resetThumbs(true);
} else if (itemList.at(i)->type() == TRANSITIONWIDGET) {
transitionitem = (Transition*) itemList.at(i);
transitionitem->setRect(0, 0, transitionitem->rect().width(), m_tracksHeight / 3 * 2 - 1);
}
m_document->setModified(true);
m_document->renderer()->doRefresh();
+ m_waitingThumbs.append(item);
+ m_thumbsTimer.start();
}
void CustomTrackView::slotUpdateClip(const QString &clipId)
bool success = m_document->renderer()->mltResizeClipCrop(clipinfo, end.cropStart - start.cropStart);
if (success) {
item->setCropStart(end.cropStart);
- item->resetThumbs();
+ item->resetThumbs(true);
}
}
m_document->renderer()->doRefresh();
for (int i = 0; i < itemList.count(); i++) {
if (itemList.at(i)->type() == AVWIDGET) {
item = static_cast <ClipItem *>(itemList.at(i));
- if (item->clipType() != COLOR) {
+ if (item->clipType() != COLOR && item->clipType() != AUDIO) {
// Check if we have a cached thumbnail
- if (item->clipType() == IMAGE || item->clipType() == TEXT || item->clipType() == AUDIO) {
+ if (item->clipType() == IMAGE || item->clipType() == TEXT) {
QString thumb = thumbBase + item->baseClip()->getClipHash() + "_0.png";
if (QFile::exists(thumb)) {
QPixmap pix(thumb);
item->slotSetStartThumb(pix);
- item->slotSetEndThumb(pix);
}
} else {
QString startThumb = thumbBase + item->baseClip()->getClipHash() + '_';