diff options
author | Thomas Habets <thomas@habets.se> | 2021-04-03 22:51:48 +0100 |
---|---|---|
committer | Martin Braun <martin@gnuradio.org> | 2021-04-06 12:04:06 -0700 |
commit | a11ffaee02f7600f20ec5967c37fe9490c9f379a (patch) | |
tree | cccf647217540759a361e1a48e084440f46ba8b5 /gr-qtgui | |
parent | qtgui: Simplify a return statement (diff) | |
download | gnuradio-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.h | 4 | ||||
-rw-r--r-- | gr-qtgui/lib/waterfallGlobalData.cc | 40 |
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; } |