X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fscopes%2Fcolorscopes%2Fabstractgfxscopewidget.cpp;h=f39963f3e6a1c48ec4cf1dcc66fa2ef6d88f6cd6;hb=8a6e4eb1dea318ecd1c0b313c28b764e89a524c4;hp=5c82fc227d058126cab6c740bec45d404ffb174a;hpb=430873d4180c1340061991885c93585322e5c29c;p=kdenlive diff --git a/src/scopes/colorscopes/abstractgfxscopewidget.cpp b/src/scopes/colorscopes/abstractgfxscopewidget.cpp index 5c82fc22..f39963f3 100644 --- a/src/scopes/colorscopes/abstractgfxscopewidget.cpp +++ b/src/scopes/colorscopes/abstractgfxscopewidget.cpp @@ -12,89 +12,50 @@ #include "renderer.h" #include "monitormanager.h" -#include -#include -#include -#include #include -#include // Uncomment for debugging. //#define DEBUG_AGSW #ifdef DEBUG_AGSW -#include #endif const int REALTIME_FPS = 30; -AbstractGfxScopeWidget::AbstractGfxScopeWidget(MonitorManager *manager, bool trackMouse, QWidget *parent) : - AbstractScopeWidget(trackMouse, parent), - m_manager(manager) +AbstractGfxScopeWidget::AbstractGfxScopeWidget(bool trackMouse, QWidget *parent) : + AbstractScopeWidget(trackMouse, parent) { - m_activeRender = m_manager->activeRenderer(); - - bool b = true; - if (m_activeRender != NULL) - b &= connect(m_activeRender, SIGNAL(frameUpdated(QImage)), this, SLOT(slotRenderZoneUpdated(QImage))); - Q_ASSERT(b); } AbstractGfxScopeWidget::~AbstractGfxScopeWidget() { } QImage AbstractGfxScopeWidget::renderScope(uint accelerationFactor) { + QMutexLocker lock(&m_mutex); return renderGfxScope(accelerationFactor, m_scopeImage); } void AbstractGfxScopeWidget::mouseReleaseEvent(QMouseEvent *event) { - if (!m_aAutoRefresh->isChecked() && m_activeRender) { - m_activeRender->sendFrameUpdate(); - } AbstractScopeWidget::mouseReleaseEvent(event); + emit signalFrameRequest(widgetName()); } ///// Slots ///// -void AbstractGfxScopeWidget::slotActiveMonitorChanged() -{ - if (m_activeRender) { - if (m_activeRender == m_manager->activeRenderer()) return; - bool b = true; - b &= m_activeRender->disconnect(this); - Q_ASSERT(b); - } - m_activeRender = m_manager->activeRenderer(); - - if (m_activeRender) { -#ifdef DEBUG_AGSW - qDebug() << "Active monitor has changed in " << widgetName() << ". Is the clip monitor active now? " << m_activeRender->name(); -#endif - bool b = connect(m_activeRender, SIGNAL(frameUpdated(QImage)), this, SLOT(slotRenderZoneUpdated(QImage))); - Q_ASSERT(b); - } - - // Update the scope for the new monitor. - forceUpdate(true); -} -void AbstractGfxScopeWidget::slotClearMonitor() +void AbstractGfxScopeWidget::slotRenderZoneUpdated(const QImage &frame) { - m_activeRender = NULL; -} - -void AbstractGfxScopeWidget::slotRenderZoneUpdated(QImage frame) -{ - m_scopeImage = frame; + QMutexLocker lock(&m_mutex); + m_scopeImage = frame.rgbSwapped(); AbstractScopeWidget::slotRenderZoneUpdated(); } void AbstractGfxScopeWidget::slotAutoRefreshToggled(bool autoRefresh) { - if (autoRefresh && m_activeRender) { - m_activeRender->sendFrameUpdate(); + if (autoRefresh) { + emit signalFrameRequest(widgetName()); } } @@ -102,3 +63,5 @@ void AbstractGfxScopeWidget::slotAutoRefreshToggled(bool autoRefresh) #ifdef DEBUG_AGSW #undef DEBUG_AGSW #endif + +#include "abstractgfxscopewidget.moc"