Git commit 464b1932ada07e47cb33125f74dbb079014ff1ec by Jean-Baptiste Mardel= le. Committed on 20/01/2017 at 17:26. Pushed by mardelle into branch 'master'. Merge branch '16.12' M +10 -0 src/doc/kthumb.cpp M +3 -6 src/monitor/monitor.cpp M +1 -1 src/renderer.cpp https://commits.kde.org/kdenlive/464b1932ada07e47cb33125f74dbb079014ff1ec diff --cc src/doc/kthumb.cpp index e55899071,92aeeafaf..ce9c91644 --- a/src/doc/kthumb.cpp +++ b/src/doc/kthumb.cpp @@@ -44,10 -42,18 +44,20 @@@ QPixmap KThumb::getImage(const QUrl &ur height =3D width * profile.height() / profile.width(); } QPixmap pix(width, height); - if (!url.isValid()) return pix; + if (!url.isValid()) { + return pix; + } Mlt::Producer *producer =3D new Mlt::Producer(profile, url.toLocalFil= e().toUtf8().constData()); + if (KdenliveSettings::gpu_accel()) { + QString service =3D producer->get("mlt_service"); + QString res =3D producer->get("resource"); + delete producer; + producer =3D new Mlt::Producer(profile, service.toUtf8().constDat= a(), res.toUtf8().constData()); + Mlt::Filter scaler(profile, "swscale"); + Mlt::Filter converter(profile, "avcolor_space"); + producer->attach(scaler); + producer->attach(converter); + } pix =3D QPixmap::fromImage(getFrame(producer, frame, width, height)); delete producer; return pix; diff --cc src/monitor/monitor.cpp index 076d0e13e,91058eaeb..18cd051fd --- a/src/monitor/monitor.cpp +++ b/src/monitor/monitor.cpp @@@ -1410,37 -1342,35 +1410,34 @@@ void Monitor::updateClipProducer(const = = void Monitor::slotOpenClip(ClipController *controller, int in, int out) { - if (render =3D=3D NULL) { + if (render =3D=3D nullptr) { return; } - bool sameClip =3D controller =3D=3D m_controller && controller !=3D n= ullptr; m_controller =3D controller; if (!m_glMonitor->isVisible()) { // Don't load clip if monitor is not active (disabled) return; } if (controller) { - if (m_recManager->toolbar()->isVisible()) { - // we are in record mode, don't display clip - return; - } + if (m_recManager->toolbar()->isVisible()) { + // we are in record mode, don't display clip + return; + } updateMarkers(); - if (!sameClip) { - // Loading new clip, stop if playing - if (m_playAction->isActive()) { - m_playAction->setActive(false); - } + // Loading new clip / zone, stop if playing + if (m_playAction->isActive()) { + m_playAction->setActive(false); } render->setProducer(m_controller->masterProducer(), in, isActive(= )); - if (out > -1) { - m_ruler->setZone(in, out); - setClipZone(QPoint(in, out)); - } - m_audioMeterWidget->audioChannels =3D controller->audioInfo() ? controll= er->audioInfo()->channels() : 0; - emit requestAudioThumb(controller->clipId()); - //hasEffects =3D controller->hasEffects(); - } - else { - render->setProducer(NULL, -1, isActive()); + if (out > -1) { + m_ruler->setZone(in, out); + setClipZone(QPoint(in, out)); + } + m_audioMeterWidget->audioChannels =3D controller->audioInfo() ? c= ontroller->audioInfo()->channels() : 0; + emit requestAudioThumb(controller->clipId()); + //hasEffects =3D controller->hasEffects(); + } else { + render->setProducer(nullptr, -1, isActive()); m_glMonitor->setAudioThumb(); m_audioMeterWidget->audioChannels =3D 0; }