* (at your option) any later version. *
***************************************************************************/
-#include "qtconcurrentrun.h"
-
#include "abstractaudioscopewidget.h"
#include "renderer.h"
#include "monitor.h"
-#include <QDebug>
+#include <QtConcurrentRun>
#include <QFuture>
#include <QColor>
#include <QMenu>
#include <QMouseEvent>
#include <QPainter>
-AbstractAudioScopeWidget::AbstractAudioScopeWidget(Monitor *projMonitor, Monitor *clipMonitor, bool trackMouse, QWidget *parent) :
- AbstractScopeWidget(projMonitor, clipMonitor, trackMouse, parent)
+// Uncomment for debugging
+//#define DEBUG_AASW
+
+#ifdef DEBUG_AASW
+#include <QDebug>
+#endif
+
+AbstractAudioScopeWidget::AbstractAudioScopeWidget(bool trackMouse, QWidget *parent) :
+ AbstractScopeWidget(trackMouse, parent),
+ m_freq(0),
+ m_nChannels(0),
+ m_nSamples(0),
+ m_audioFrame(),
+ m_newData(0)
{
}
-void AbstractAudioScopeWidget::slotReceiveAudio(const QVector<int16_t>& sampleData, int freq, int num_channels, int num_samples)
+void AbstractAudioScopeWidget::slotReceiveAudio(const QVector<int16_t> &sampleData, int freq, int num_channels, int num_samples)
{
+#ifdef DEBUG_AASW
+ qDebug() << "Received audio for " << widgetName() << ".";
+#endif
m_audioFrame = sampleData;
m_freq = freq;
m_nChannels = num_channels;
m_nSamples = num_samples;
+
+ m_newData.fetchAndAddAcquire(1);
+
AbstractScopeWidget::slotRenderZoneUpdated();
- //TODO
}
AbstractAudioScopeWidget::~AbstractAudioScopeWidget() {}
QImage AbstractAudioScopeWidget::renderScope(uint accelerationFactor)
{
- return renderAudioScope(accelerationFactor, m_audioFrame, m_freq, m_nChannels, m_nSamples);
+ int newData = m_newData.fetchAndStoreAcquire(0);
+
+ return renderAudioScope(accelerationFactor, m_audioFrame, m_freq, m_nChannels, m_nSamples, newData);
}
+
+#ifdef DEBUG_AASW
+#undef DEBUG_AASW
+#endif