]> git.sesse.net Git - kdenlive/blobdiff - src/scopes/colorscopes/abstractgfxscopewidget.cpp
Fix includes
[kdenlive] / src / scopes / colorscopes / abstractgfxscopewidget.cpp
index 5c82fc227d058126cab6c740bec45d404ffb174a..f39963f3e6a1c48ec4cf1dcc66fa2ef6d88f6cd6 100644 (file)
 #include "renderer.h"
 #include "monitormanager.h"
 
-#include <QtConcurrentRun>
-#include <QFuture>
-#include <QColor>
-#include <QMenu>
 #include <QMouseEvent>
-#include <QPainter>
 
 // Uncomment for debugging.
 //#define DEBUG_AGSW
 
 #ifdef DEBUG_AGSW
-#include <QDebug>
 #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"