aboutsummaryrefslogtreecommitdiffstats
path: root/gr-qtgui
diff options
context:
space:
mode:
authorThomas Habets <thomas@habets.se>2021-04-03 22:51:48 +0100
committerMartin Braun <martin@gnuradio.org>2021-04-06 12:04:06 -0700
commita11ffaee02f7600f20ec5967c37fe9490c9f379a (patch)
treecccf647217540759a361e1a48e084440f46ba8b5 /gr-qtgui
parentqtgui: Simplify a return statement (diff)
downloadgnuradio-a11ffaee02f7600f20ec5967c37fe9490c9f379a.tar.xz
gnuradio-a11ffaee02f7600f20ec5967c37fe9490c9f379a.zip
qtgui: Remove manual memory management from waterfallGlobalData
Signed-off-by: Thomas Habets <thomas@habets.se>
Diffstat (limited to 'gr-qtgui')
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/waterfallGlobalData.h4
-rw-r--r--gr-qtgui/lib/waterfallGlobalData.cc40
2 files changed, 20 insertions, 24 deletions
diff --git a/gr-qtgui/include/gnuradio/qtgui/waterfallGlobalData.h b/gr-qtgui/include/gnuradio/qtgui/waterfallGlobalData.h
index 4df4676bf..03d9d13dc 100644
--- a/gr-qtgui/include/gnuradio/qtgui/waterfallGlobalData.h
+++ b/gr-qtgui/include/gnuradio/qtgui/waterfallGlobalData.h
@@ -43,7 +43,7 @@ public:
virtual uint64_t getNumFFTPoints() const;
virtual void addFFTData(const double*, const uint64_t, const int);
- virtual double* getSpectrumDataBuffer() const;
+ virtual const double* getSpectrumDataBuffer() const;
virtual void setSpectrumDataBuffer(const double*);
virtual int getNumLinesToUpdate() const;
@@ -51,7 +51,7 @@ public:
virtual void incrementNumLinesToUpdate();
protected:
- double* _spectrumData;
+ std::vector<double> _spectrumData;
uint64_t _fftPoints;
uint64_t _historyLength;
int _numLinesToUpdate;
diff --git a/gr-qtgui/lib/waterfallGlobalData.cc b/gr-qtgui/lib/waterfallGlobalData.cc
index 7d282212c..4c7033104 100644
--- a/gr-qtgui/lib/waterfallGlobalData.cc
+++ b/gr-qtgui/lib/waterfallGlobalData.cc
@@ -23,18 +23,15 @@ WaterfallData::WaterfallData(const double minimumFrequency,
: QwtRasterData(QwtDoubleRect(minimumFrequency /* X START */,
0 /* Y START */,
maximumFrequency - minimumFrequency /* WIDTH */,
- static_cast<double>(historyExtent) /* HEIGHT */))
+ static_cast<double>(historyExtent) /* HEIGHT */)),
#else
- : QwtRasterData()
+ : QwtRasterData(),
#endif
+ _spectrumData(fftPoints * historyExtent),
+ _fftPoints(fftPoints),
+ _historyLength(historyExtent),
+ _intensityRange(QwtDoubleInterval(-200.0, 0.0))
{
- _intensityRange = QwtDoubleInterval(-200.0, 0.0);
-
- _fftPoints = fftPoints;
- _historyLength = historyExtent;
-
- _spectrumData = new double[_fftPoints * _historyLength];
-
#if QWT_VERSION >= 0x060000
setInterval(Qt::XAxis, QwtInterval(minimumFrequency, maximumFrequency));
setInterval(Qt::YAxis, QwtInterval(0, historyExtent));
@@ -44,11 +41,11 @@ WaterfallData::WaterfallData(const double minimumFrequency,
reset();
}
-WaterfallData::~WaterfallData() { delete[] _spectrumData; }
+WaterfallData::~WaterfallData() {}
void WaterfallData::reset()
{
- memset(_spectrumData, 0x0, _fftPoints * _historyLength * sizeof(double));
+ std::fill(std::begin(_spectrumData), std::end(_spectrumData), 0.0);
_numLinesToUpdate = -1;
}
@@ -60,14 +57,12 @@ void WaterfallData::copy(const WaterfallData* rhs)
(boundingRect() != rhs->boundingRect())) {
_fftPoints = rhs->getNumFFTPoints();
setBoundingRect(rhs->boundingRect());
- delete[] _spectrumData;
- _spectrumData = new double[_fftPoints * _historyLength];
+ _spectrumData.resize(_fftPoints * _historyLength);
}
#else
if (_fftPoints != rhs->getNumFFTPoints()) {
_fftPoints = rhs->getNumFFTPoints();
- delete[] _spectrumData;
- _spectrumData = new double[_fftPoints * _historyLength];
+ _spectrumData.resize(_fftPoints * _historyLength);
}
#endif
@@ -101,8 +96,7 @@ void WaterfallData::resizeData(const double startFreq,
setBoundingRect(QwtDoubleRect(
startFreq, 0, stopFreq - startFreq, static_cast<double>(_historyLength)));
_fftPoints = fftPoints;
- delete[] _spectrumData;
- _spectrumData = new double[_fftPoints * _historyLength];
+ _spectrumData.resize(_fftPoints * _historyLength);
}
#else
@@ -114,8 +108,7 @@ void WaterfallData::resizeData(const double startFreq,
setInterval(Qt::YAxis, QwtInterval(0, _historyLength));
_fftPoints = fftPoints;
- delete[] _spectrumData;
- _spectrumData = new double[_fftPoints * _historyLength];
+ _spectrumData.resize(_fftPoints * _historyLength);
}
#endif
@@ -199,7 +192,7 @@ void WaterfallData::addFFTData(const double* fftData,
// Copy the old data over if any available
if (heightOffset > 0) {
- memmove(_spectrumData,
+ memmove(_spectrumData.data(),
&_spectrumData[(drawingDroppedFrames + 1) * _fftPoints],
heightOffset * _fftPoints * sizeof(double));
}
@@ -219,11 +212,14 @@ void WaterfallData::addFFTData(const double* fftData,
}
}
-double* WaterfallData::getSpectrumDataBuffer() const { return _spectrumData; }
+const double* WaterfallData::getSpectrumDataBuffer() const
+{
+ return _spectrumData.data();
+}
void WaterfallData::setSpectrumDataBuffer(const double* newData)
{
- memcpy(_spectrumData, newData, _fftPoints * _historyLength * sizeof(double));
+ memcpy(_spectrumData.data(), newData, _fftPoints * _historyLength * sizeof(double));
}
int WaterfallData::getNumLinesToUpdate() const { return _numLinesToUpdate; }