X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmonitormanager.cpp;h=1b0a7c6fb278400d20a2867947a0648408ea4681;hb=674229de00f3b42f64251808087651b0ccd1d6c9;hp=0c5e1a8714c86601897544f15c54ca284b379528;hpb=05812d33728689c0c531b81e283cd4616ab07842;p=kdenlive diff --git a/src/monitormanager.cpp b/src/monitormanager.cpp index 0c5e1a87..1b0a7c6f 100644 --- a/src/monitormanager.cpp +++ b/src/monitormanager.cpp @@ -26,14 +26,13 @@ #include #include - +#include MonitorManager::MonitorManager(QWidget *parent) : QObject(parent), m_clipMonitor(NULL), m_projectMonitor(NULL), - m_activeMonitor(NULL), - m_blocked(false) + m_activeMonitor(NULL) { } @@ -49,7 +48,8 @@ void MonitorManager::initMonitors(Monitor *clipMonitor, Monitor *projectMonitor, m_monitorsList.append(clipMonitor); m_monitorsList.append(projectMonitor); - m_monitorsList.append(recMonitor); + if (recMonitor) + m_monitorsList.append(recMonitor); } void MonitorManager::appendMonitor(AbstractMonitor *monitor) @@ -62,25 +62,30 @@ 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) { m_activeMonitor = m_monitorsList.at(i); - emit raiseMonitor(m_activeMonitor); } else m_monitorsList.at(i)->stop(); } - if (m_activeMonitor) m_activeMonitor->start(); + 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 +bool MonitorManager::isActive(const QString &name) const { return m_activeMonitor ? m_activeMonitor->name() == name: false; } @@ -95,7 +100,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(); } @@ -173,7 +177,6 @@ void MonitorManager::slotEnd() void MonitorManager::resetProfiles(Timecode tc) { - if (m_blocked) return; m_timecode = tc; slotResetProfiles(); //QTimer::singleShot(300, this, SLOT(slotResetProfiles())); @@ -181,17 +184,15 @@ 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); + if (m_activeMonitor) m_activeMonitor->parentWidget()->raise(); + emit checkColorScopes(); } void MonitorManager::slotRefreshCurrentMonitor() @@ -211,6 +212,11 @@ void MonitorManager::slotUpdateAudioMonitoring() } } +void MonitorManager::clearScopeSource() +{ + emit clearScopes(); +} + void MonitorManager::updateScopeSource() { emit checkColorScopes(); @@ -218,7 +224,9 @@ void MonitorManager::updateScopeSource() AbstractRender *MonitorManager::activeRenderer() { - if (m_activeMonitor) return m_activeMonitor->abstractRender(); + if (m_activeMonitor) { + return m_activeMonitor->abstractRender(); + } return NULL; }