X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmonitormanager.cpp;h=c7fe6b505e0fad8d3d31b46884c16d5e046db4dd;hb=1e92bf800f047d780aa825fc9cf11884f9d0943a;hp=55a570c8e2f7c64d57aa92883f99f543a2a42f05;hpb=e71a0b9a36b5c5f1b27674b335a1316a3985e084;p=kdenlive diff --git a/src/monitormanager.cpp b/src/monitormanager.cpp index 55a570c8..c7fe6b50 100644 --- a/src/monitormanager.cpp +++ b/src/monitormanager.cpp @@ -26,14 +26,14 @@ #include #include +#include MonitorManager::MonitorManager(QWidget *parent) : QObject(parent), m_clipMonitor(NULL), m_projectMonitor(NULL), - m_activeMonitor(NULL), - m_blocked(false) + m_activeMonitor(NULL) { } @@ -63,12 +63,12 @@ void MonitorManager::removeMonitor(AbstractMonitor *monitor) m_monitorsList.removeAll(monitor); } -void MonitorManager::activateMonitor(QString name) +bool MonitorManager::activateMonitor(const QString &name) { - if (m_blocked || m_clipMonitor == NULL || m_projectMonitor == NULL) - return; + if (m_clipMonitor == NULL || m_projectMonitor == NULL) + return false; if (m_activeMonitor && m_activeMonitor->name() == name) - return; + return false; m_activeMonitor = NULL; for (int i = 0; i < m_monitorsList.count(); i++) { if (m_monitorsList.at(i)->name() == name) { @@ -77,10 +77,13 @@ void MonitorManager::activateMonitor(QString name) else m_monitorsList.at(i)->stop(); } if (m_activeMonitor) { + m_activeMonitor->blockSignals(true); m_activeMonitor->parentWidget()->raise(); m_activeMonitor->start(); + m_activeMonitor->blockSignals(false); } emit checkColorScopes(); + return (m_activeMonitor != NULL); } bool MonitorManager::isActive(const QString &name) const @@ -98,7 +101,6 @@ void MonitorManager::slotSwitchMonitors(bool activateClip) void MonitorManager::stopActiveMonitor() { - if (m_blocked) return; if (m_activeMonitor == m_clipMonitor) m_clipMonitor->pause(); else m_projectMonitor->pause(); } @@ -176,7 +178,6 @@ void MonitorManager::slotEnd() void MonitorManager::resetProfiles(Timecode tc) { - if (m_blocked) return; m_timecode = tc; slotResetProfiles(); //QTimer::singleShot(300, this, SLOT(slotResetProfiles())); @@ -184,25 +185,21 @@ void MonitorManager::resetProfiles(Timecode tc) void MonitorManager::slotResetProfiles() { - if (m_blocked) return; if (m_projectMonitor == NULL || m_clipMonitor == NULL) return; blockSignals(true); QString active = m_activeMonitor ? m_activeMonitor->name() : QString(); - activateMonitor("clip"); m_clipMonitor->resetProfile(KdenliveSettings::current_profile()); - m_clipMonitor->updateTimecodeFormat(); - activateMonitor("project"); m_projectMonitor->resetProfile(KdenliveSettings::current_profile()); - m_projectMonitor->updateTimecodeFormat(); - //m_projectMonitor->refreshMonitor(true); if (!active.isEmpty()) activateMonitor(active); blockSignals(false); - m_activeMonitor->parentWidget()->raise(); + if (m_activeMonitor) m_activeMonitor->parentWidget()->raise(); emit checkColorScopes(); } -void MonitorManager::slotRefreshCurrentMonitor() +void MonitorManager::slotRefreshCurrentMonitor(const QString &id) { + // Clip producer was modified, check if clip is currently displayed in clip monitor + m_clipMonitor->reloadProducer(id); if (m_activeMonitor == m_clipMonitor) m_clipMonitor->refreshMonitor(); else m_projectMonitor->refreshMonitor(); }