X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmonitormanager.cpp;h=738a808445224f9044713f8aeb871cd50a92197b;hb=5feac3c2f6edfa8639d8e9b9aa5a82c21f3d1776;hp=30eda6e55c3400d6b4258424d19718246c1625ce;hpb=c42a026234a44a2d766e57bc64a6ac7bbd094000;p=kdenlive diff --git a/src/monitormanager.cpp b/src/monitormanager.cpp index 30eda6e5..738a8084 100644 --- a/src/monitormanager.cpp +++ b/src/monitormanager.cpp @@ -19,6 +19,7 @@ #include "monitormanager.h" +#include "renderer.h" #include "kdenlivesettings.h" #include @@ -27,8 +28,11 @@ #include -MonitorManager::MonitorManager(QWidget *parent) - : QObject(parent) +MonitorManager::MonitorManager(QWidget *parent) : + QObject(parent), + m_clipMonitor(NULL), + m_projectMonitor(NULL), + m_blocked(false) { } @@ -45,7 +49,10 @@ void MonitorManager::initMonitors(Monitor *clipMonitor, Monitor *projectMonitor) void MonitorManager::activateMonitor(QString name) { - if (m_activeMonitor == name) return; + if (m_blocked || m_clipMonitor == NULL || m_projectMonitor == NULL) + return; + if (m_activeMonitor == name) + return; if (name == "clip") { m_projectMonitor->stop(); m_clipMonitor->start(); @@ -53,30 +60,23 @@ void MonitorManager::activateMonitor(QString name) } else { m_clipMonitor->stop(); m_projectMonitor->start(); - m_projectMonitor->raise(); emit raiseClipMonitor(false); } m_activeMonitor = name; + emit checkColorScopes(); } -void MonitorManager::switchMonitors() +void MonitorManager::slotSwitchMonitors(bool activateClip) { - if (m_clipMonitor->isActive()) { - m_clipMonitor->stop(); - m_projectMonitor->start(); - m_projectMonitor->raise(); - m_activeMonitor = m_projectMonitor->name(); - emit raiseClipMonitor(false); - } else { - m_projectMonitor->stop(); - m_clipMonitor->start(); - m_activeMonitor = m_clipMonitor->name(); - emit raiseClipMonitor(true); - } + if (activateClip) + activateMonitor("clip"); + else + activateMonitor("project"); } void MonitorManager::stopActiveMonitor() { + if (m_blocked) return; if (m_clipMonitor->isActive()) m_clipMonitor->pause(); else m_projectMonitor->pause(); } @@ -87,6 +87,11 @@ void MonitorManager::slotPlay() else m_projectMonitor->slotPlay(); } +void MonitorManager::slotPause() +{ + stopActiveMonitor(); +} + void MonitorManager::slotPlayZone() { if (m_clipMonitor->isActive()) m_clipMonitor->slotPlayZone(); @@ -149,17 +154,37 @@ void MonitorManager::slotEnd() void MonitorManager::resetProfiles(Timecode tc) { + if (m_blocked) return; m_timecode = tc; - QTimer::singleShot(300, this, SLOT(slotResetProfiles())); + slotResetProfiles(); + //QTimer::singleShot(300, this, SLOT(slotResetProfiles())); } void MonitorManager::slotResetProfiles() { + if (m_blocked) return; + if (m_projectMonitor == NULL || m_clipMonitor == NULL) return; + QString active = m_activeMonitor; activateMonitor("clip"); - m_clipMonitor->resetProfile(); + m_clipMonitor->resetProfile(KdenliveSettings::current_profile()); + m_clipMonitor->updateTimecodeFormat(); activateMonitor("project"); - m_projectMonitor->resetProfile(); + m_projectMonitor->resetProfile(KdenliveSettings::current_profile()); + m_projectMonitor->updateTimecodeFormat(); //m_projectMonitor->refreshMonitor(true); + activateMonitor(active); +} + +void MonitorManager::slotRefreshCurrentMonitor() +{ + if (m_clipMonitor->isActive()) m_clipMonitor->refreshMonitor(); + else m_projectMonitor->refreshMonitor(); +} + +void MonitorManager::slotUpdateAudioMonitoring() +{ + m_clipMonitor->render->analyseAudio = KdenliveSettings::monitor_audio(); + m_projectMonitor->render->analyseAudio = KdenliveSettings::monitor_audio(); } #include "monitormanager.moc"