diff --git a/src/demod/DemodulatorPreThread.cpp b/src/demod/DemodulatorPreThread.cpp index 03ea87d..a449699 100644 --- a/src/demod/DemodulatorPreThread.cpp +++ b/src/demod/DemodulatorPreThread.cpp @@ -98,8 +98,7 @@ void DemodulatorPreThread::threadMain() { std::cout << "Demodulator preprocessor thread started.." << std::endl; - std::deque buffers; - std::deque::iterator buffers_i; + ReBuffer buffers; std::vector in_buf_data; std::vector out_buf_data; @@ -207,19 +206,7 @@ void DemodulatorPreThread::threadMain() { out_buf = temp_buf; } - DemodulatorThreadPostIQData *resamp = NULL; - - for (buffers_i = buffers.begin(); buffers_i != buffers.end(); buffers_i++) { - if ((*buffers_i)->getRefCount() <= 0) { - resamp = (*buffers_i); - break; - } - } - - if (resamp == NULL) { - resamp = new DemodulatorThreadPostIQData; - buffers.push_back(resamp); - } + DemodulatorThreadPostIQData *resamp = buffers.getBuffer(); int out_size = ceil((double) (bufSize) * iqResampleRatio) + 512; @@ -326,12 +313,8 @@ void DemodulatorPreThread::threadMain() { } } - while (!buffers.empty()) { - DemodulatorThreadPostIQData *iqDataDel = buffers.front(); - buffers.pop_front(); - delete iqDataDel; - } - + buffers.purge(); + DemodulatorThreadCommand tCmd(DemodulatorThreadCommand::DEMOD_THREAD_CMD_DEMOD_PREPROCESS_TERMINATED); tCmd.context = this; threadQueueNotify->push(tCmd); diff --git a/src/sdr/SDRPostThread.cpp b/src/sdr/SDRPostThread.cpp index 66d9c1a..de155d5 100644 --- a/src/sdr/SDRPostThread.cpp +++ b/src/sdr/SDRPostThread.cpp @@ -229,7 +229,7 @@ void SDRPostThread::threadMain() { data_in->decRefCount(); } -// buffers.purge(); + buffers.purge(); if (iqVisualQueue.load() && !iqVisualQueue.load()->empty()) { DemodulatorThreadIQData *visualDataDummy; diff --git a/src/sdr/SDRThread.cpp b/src/sdr/SDRThread.cpp index 88635f1..b5eb73c 100644 --- a/src/sdr/SDRThread.cpp +++ b/src/sdr/SDRThread.cpp @@ -298,7 +298,7 @@ void SDRThread::threadMain() { } } - // buffers.purge(); + buffers.purge(); std::cout << "SDR thread done." << std::endl; }