]> git.sesse.net Git - kdenlive/commitdiff
Fix play zone sometimes blocking seeking: http://kdenlive.org/mantis/view.php?id...
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 17 Dec 2012 16:37:56 +0000 (17:37 +0100)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 17 Dec 2012 16:37:56 +0000 (17:37 +0100)
src/mainwindow.cpp
src/renderer.cpp
src/renderer.h

index 24933c2d8cc84d4ed9ba75279854252fa10dc048..7c1aee5b35bcd8f5cdbf3f4450c3d4abb8cbe9a9 100644 (file)
@@ -925,7 +925,6 @@ void MainWindow::slotConnectMonitors()
     connect(m_projectMonitor->render, SIGNAL(replyGetImage(const QString &, const QString &, int, int)), m_projectList, SLOT(slotReplyGetImage(const QString &, const QString &, int, int)));
     connect(m_projectMonitor->render, SIGNAL(replyGetImage(const QString &, const QImage &)), m_projectList, SLOT(slotReplyGetImage(const QString &, const QImage &)));
 
-    kDebug()<<"  - - - - - -\n CONNECTED REPLY";
     connect(m_projectMonitor->render, SIGNAL(replyGetFileProperties(const QString &, Mlt::Producer*, const stringMap &, const stringMap &, bool)), m_projectList, SLOT(slotReplyGetFileProperties(const QString &, Mlt::Producer*, const stringMap &, const stringMap &, bool)));
 
     connect(m_projectMonitor->render, SIGNAL(removeInvalidClip(const QString &, bool)), m_projectList, SLOT(slotRemoveInvalidClip(const QString &, bool)));
index 70cf139d6770ae92924376b201d9cb8efeb4050c..a1106196a3d2df9db4778ffc6502f674efbdb136 100644 (file)
@@ -1612,8 +1612,7 @@ void Render::playZone(const GenTime & startTime, const GenTime & stopTime)
 {
     requestedSeekPosition = SEEK_INACTIVE;
     if (!m_mltProducer || !m_mltConsumer)
-        return;
-    if (!m_isZoneMode) m_originalOut = m_mltProducer->get_playtime() - 1;
+        return; 
     m_mltProducer->set("out", (int)(stopTime.frames(m_fps)));
     m_mltProducer->seek((int)(startTime.frames(m_fps)));
     m_paused = false;
@@ -1626,7 +1625,7 @@ void Render::playZone(const GenTime & startTime, const GenTime & stopTime)
 void Render::resetZoneMode()
 {
     if (!m_isZoneMode && !m_isLoopMode) return;
-    m_mltProducer->set("out", m_originalOut);
+    m_mltProducer->set("out", m_mltProducer->get_length());
     //m_mltProducer->set("eof", "pause");
     m_isZoneMode = false;
     m_isLoopMode = false;
@@ -1865,6 +1864,7 @@ void Render::mltCheckLength(Mlt::Tractor *tractor)
     int trackNb = tractor->count();
     int duration = 0;
     int trackDuration;
+    if (m_isZoneMode) resetZoneMode();
     if (trackNb == 1) {
         Mlt::Producer trackProducer(tractor->track(0));
         duration = trackProducer.get_playtime() - 1;
index 9c92f9d691dd5345d1b71fbfcb8c37d6c0b4bd92..1534a4c542162b27ef7405f9b0eda78cfda1ecef 100644 (file)
@@ -351,7 +351,6 @@ private:
     bool m_isZoneMode;
     bool m_isLoopMode;
     GenTime m_loopStart;
-    int m_originalOut;
 
     /** @brief True when the monitor is in split view. */
     bool m_isSplitView;