#include "abstractgfxscopewidget.h"
#include "renderer.h"
-#include "monitor.h"
+#include "monitormanager.h"
#include <QFuture>
#include <QColor>
#include <QMouseEvent>
#include <QPainter>
+// Uncomment for debugging.
+//#define DEBUG_AGSW
+
+#ifdef DEBUG_AGSW
+#include <QDebug>
+#endif
+
const int REALTIME_FPS = 30;
-AbstractGfxScopeWidget::AbstractGfxScopeWidget(Monitor *projMonitor, Monitor *clipMonitor, bool trackMouse, QWidget *parent) :
+AbstractGfxScopeWidget::AbstractGfxScopeWidget(MonitorManager *manager, bool trackMouse, QWidget *parent) :
AbstractScopeWidget(trackMouse, parent),
- m_clipMonitor(clipMonitor),
- m_projMonitor(projMonitor)
-
+ m_manager(manager)
{
- m_activeRender = (m_clipMonitor->isActive()) ? m_clipMonitor->render : m_projMonitor->render;
+ m_activeRender = m_manager->activeRenderer();
bool b = true;
- b &= connect(m_activeRender, SIGNAL(frameUpdated(QImage)), this, SLOT(slotRenderZoneUpdated(QImage)));
+ 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)
void AbstractGfxScopeWidget::mouseReleaseEvent(QMouseEvent *event)
{
- if (!m_aAutoRefresh->isChecked()) {
+ if (!m_aAutoRefresh->isChecked() && m_activeRender) {
m_activeRender->sendFrameUpdate();
}
AbstractScopeWidget::mouseReleaseEvent(event);
///// Slots /////
-void AbstractGfxScopeWidget::slotActiveMonitorChanged(bool isClipMonitor)
+void AbstractGfxScopeWidget::slotActiveMonitorChanged()
{
-// qDebug() << "Active monitor has changed in " << m_widgetName << ". Is the clip monitor active now? " << isClipMonitor;
-
- bool b = m_activeRender->disconnect(this);
- Q_ASSERT(b);
+ if (m_activeRender) {
+ bool b = m_activeRender->disconnect(this);
+ Q_ASSERT(b);
+ }
- m_activeRender = (isClipMonitor) ? m_clipMonitor->render : m_projMonitor->render;
+ m_activeRender = m_manager->activeRenderer();
+#ifdef DEBUG_AGSW
+ qDebug() << "Active monitor has changed in " << widgetName() << ". Is the clip monitor active now? " << m_activeRender->name();
+#endif
//b &= connect(m_activeRender, SIGNAL(rendererPosition(int)), this, SLOT(slotRenderZoneUpdated()));
- b &= connect(m_activeRender, SIGNAL(frameUpdated(QImage)), this, SLOT(slotRenderZoneUpdated(QImage)));
- Q_ASSERT(b);
+ if (m_activeRender) {
+ 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::slotAutoRefreshToggled(bool autoRefresh)
{
- if (autoRefresh) {
+ if (autoRefresh && m_activeRender) {
m_activeRender->sendFrameUpdate();
}
}
+
+
+#ifdef DEBUG_AGSW
+#undef DEBUG_AGSW
+#endif