]> git.sesse.net Git - kdenlive/blobdiff - src/monitor.cpp
Fix dropframe timecode, patch from John T. Mertz
[kdenlive] / src / monitor.cpp
index 88dd1aafa1de5936a6a2ebbb7deb5bbb6c05fa68..9504ec4fcc1147e78a36e226f1541ac581389693 100644 (file)
@@ -118,7 +118,8 @@ Monitor::Monitor(QString name, MonitorManager *manager, QString profile, QWidget
     if (m_frametimecode) {
         m_timePos->setInputMask(QString());
         m_timePos->setValidator(new QIntValidator(this));
-    } else m_timePos->setInputMask("99:99:99:99");
+    } else m_timePos->setInputMask(m_monitorManager->timecode().inputMask());
+    
     toolbar->addWidget(m_timePos);
 
     connect(m_timePos, SIGNAL(editingFinished()), this, SLOT(slotSeek()));
@@ -509,7 +510,7 @@ bool Monitor::isActive() const
 void Monitor::activateMonitor()
 {
     if (!m_isActive) {
-        m_monitorManager->slotSwitchMonitors();
+        m_monitorManager->slotSwitchMonitors(m_name == "clip");
     }
 }
 
@@ -639,13 +640,6 @@ void Monitor::seekCursor(int pos)
 
 void Monitor::rendererStopped(int pos)
 {
-    if (m_currentClip != NULL && m_playAction->isChecked()) {
-        // Clip monitor
-        if (pos >= m_length - 1) {
-            slotStart();
-            return;
-        }
-    }
     if (m_ruler->slotNewValue(pos)) {
         checkOverlay();
         if (m_frametimecode) m_timePos->setText(QString::number(pos));
@@ -696,7 +690,7 @@ void Monitor::start()
 
 void Monitor::refreshMonitor(bool visible)
 {
-    if (visible && render) {
+    if (visible && render && !m_isActive) {
         activateMonitor();
         render->doRefresh(); //askForRefresh();
     }
@@ -748,12 +742,13 @@ void Monitor::slotLoopZone()
 void Monitor::slotSetXml(DocClipBase *clip, QPoint zone, const int position)
 {
     if (render == NULL) return;
-    activateMonitor();
     if (clip == NULL && m_currentClip != NULL) {
         m_currentClip = NULL;
+        m_length = -1;
         render->setProducer(NULL, -1);
         return;
     }
+    if (m_currentClip != NULL) activateMonitor();
     if (clip != m_currentClip) {
         m_currentClip = clip;
         updateMarkers(clip);
@@ -850,7 +845,7 @@ void Monitor::updateTimecodeFormat()
     } else {
         int pos = m_timePos->text().toInt();
         m_timePos->setValidator(0);
-        m_timePos->setInputMask("99:99:99:99");
+        m_timePos->setInputMask(m_monitorManager->timecode().inputMask());
         m_timePos->setText(m_monitorManager->timecode().getTimecodeFromFrames(pos));
     }
 }