From kde-commits Mon Apr 30 22:26:41 2018 From: Nicolas Carion Date: Mon, 30 Apr 2018 22:26:41 +0000 To: kde-commits Subject: [kdenlive/refactoring_timeline] src/timeline2/model: detect speed when creating clipmodel Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=152512721300598 Git commit 7761e619af1f1fbf50811177cf1c7e45dbcf8586 by Nicolas Carion. Committed on 30/04/2018 at 22:27. Pushed by alcinos into branch 'refactoring_timeline'. detect speed when creating clipmodel M +10 -3 src/timeline2/model/clipmodel.cpp M +4 -1 src/timeline2/model/clipmodel.hpp https://commits.kde.org/kdenlive/7761e619af1f1fbf50811177cf1c7e45dbcf8586 diff --git a/src/timeline2/model/clipmodel.cpp b/src/timeline2/model/clipmo= del.cpp index 24fa750b1..98f2056da 100644 --- a/src/timeline2/model/clipmodel.cpp +++ b/src/timeline2/model/clipmodel.cpp @@ -35,12 +35,15 @@ #include "gentime.h" #include = -ClipModel::ClipModel(std::shared_ptr parent, std::shared_pt= r prod, const QString &binClipId, int id) +ClipModel::ClipModel(std::shared_ptr parent, std::shared_pt= r prod, const QString &binClipId, int id, PlaylistState stat= e, + double speed) : MoveableItem(parent, id) , m_producer(std::move(prod)) , m_effectStack(EffectStackModel::construct(m_producer, {ObjectType::T= imelineClip, m_id}, parent->m_undoStack)) , m_binClipId(binClipId) , forceThumbReload(false) + , m_currentState(state) + , m_speed(speed) { m_producer->set("kdenlive:id", binClipId.toUtf8().constData()); m_producer->set("_kdenlive_cid", m_id); @@ -65,7 +68,7 @@ int ClipModel::construct(const std::shared_ptr &parent, const QSt = std::shared_ptr cutProducer =3D binClip->getTimelinePro= ducer(id, state, 1.); = - std::shared_ptr clip(new ClipModel(parent, cutProducer, bin= ClipId, id)); + std::shared_ptr clip(new ClipModel(parent, cutProducer, bin= ClipId, id, state)); clip->setClipState(state); parent->registerClip(clip); return id; @@ -87,8 +90,12 @@ int ClipModel::construct(const std::shared_ptr &parent, const QSt videoAudio.second =3D videoAudio.second && binClip->hasAudio(); state =3D stateFromBool(videoAudio); = + double speed =3D 1.0; + if (QString::fromUtf8(producer->get("mlt_service")) =3D=3D QLatin1Stri= ng("timewarp")) { + speed =3D producer->get_double("warp_speed"); + } auto result =3D binClip->giveMasterAndGetTimelineProducer(id, producer= , state); - std::shared_ptr clip(new ClipModel(parent, result.first, bi= nClipId, id)); + std::shared_ptr clip(new ClipModel(parent, result.first, bi= nClipId, id, state, speed)); clip->m_effectStack->importEffects(producer, result.second); clip->setClipState(state); parent->registerClip(clip); diff --git a/src/timeline2/model/clipmodel.hpp b/src/timeline2/model/clipmo= del.hpp index 9c6b32ad8..b7781cdf2 100644 --- a/src/timeline2/model/clipmodel.hpp +++ b/src/timeline2/model/clipmodel.hpp @@ -47,7 +47,8 @@ class ClipModel : public MoveableItem = protected: /* This constructor is not meant to be called, call the static constru= ct instead */ - ClipModel(std::shared_ptr parent, std::shared_ptr prod, const QString &binClipId, int id =3D -1); + ClipModel(std::shared_ptr parent, std::shared_ptr prod, const QString &binClipId, int id, PlaylistState state, + double speed =3D 1.); = public: ~ClipModel(); @@ -160,6 +161,8 @@ protected: bool forceThumbReload; // Used to trigger a forced thumb reload, when = producer changes = PlaylistState m_currentState; + + double m_speed =3D -1; // Speed of the clip }; = #endif