]> git.sesse.net Git - kdenlive/blobdiff - src/renderer.cpp
Remember & save monitor zone for each clip:
[kdenlive] / src / renderer.cpp
index e519a8d346581ca9dc113dd03be649151a681aa1..d237cf71d4f84806756e709bc1e6e1d6ac1f3ca7 100644 (file)
@@ -1022,7 +1022,7 @@ void Render::stop() {
     if (m_mltConsumer && !m_mltConsumer->is_stopped()) {
         kDebug() << "/////////////   RENDER STOPPED: " << m_name;
         m_isBlocked = true;
-        m_mltConsumer->set("refresh", 0);
+        //m_mltConsumer->set("refresh", 0);
         m_mltConsumer->stop();
         // delete m_mltConsumer;
         // m_mltConsumer = NULL;
@@ -1128,6 +1128,7 @@ void Render::playZone(const GenTime & startTime, const GenTime & stopTime) {
     if (!m_mltProducer || !m_mltConsumer)
         return;
     m_isBlocked = false;
+    if (!m_isZoneMode) m_originalOut = m_mltProducer->get_playtime() - 1;
     m_mltProducer->set("out", stopTime.frames(m_fps));
     m_mltProducer->seek((int)(startTime.frames(m_fps)));
     m_mltProducer->set_speed(1.0);
@@ -1136,7 +1137,8 @@ void Render::playZone(const GenTime & startTime, const GenTime & stopTime) {
 }
 
 void Render::resetZoneMode() {
-    m_mltProducer->set("out", m_mltProducer->get_length() - 1);
+    if (!m_isZoneMode && !m_isLoopMode) return;
+    m_mltProducer->set("out", m_originalOut);
     //m_mltProducer->set("eof", "pause");
     m_isZoneMode = false;
     m_isLoopMode = false;
@@ -2940,10 +2942,11 @@ void Render::mltDeleteTrack(int ix) {
 void Render::updatePreviewSettings() {
     kDebug() << "////// RESTARTING CONSUMER";
     if (!m_mltConsumer || !m_mltProducer) return;
+    if (m_mltProducer->get_playtime() == 0) return;
     Mlt::Service service(m_mltProducer->parent().get_service());
     if (service.type() != tractor_type) return;
 
-    m_mltConsumer->set("refresh", 0);
+    //m_mltConsumer->set("refresh", 0);
     if (!m_mltConsumer->is_stopped()) m_mltConsumer->stop();
     m_mltConsumer->purge();
     QString scene = sceneList();