diff --git a/src/CubicSDR.cpp b/src/CubicSDR.cpp index ca1eef3..2283d57 100644 --- a/src/CubicSDR.cpp +++ b/src/CubicSDR.cpp @@ -78,9 +78,11 @@ bool CubicSDR::OnInit() { scopeProcessor.setInput(pipeAudioVisualData); // I/Q Data - pipeSDRIQData = new SDRThreadIQDataQueue; + pipeSDRIQData = new SDRThreadIQDataQueue(); pipeSDRCommand = new SDRThreadCommandQueue(); + pipeSDRIQData->set_max_num_items(1); + sdrThread = new SDRThread(); sdrThread->setInputQueue("SDRCommandQueue",pipeSDRCommand); sdrThread->setOutputQueue("IQDataOutput",pipeSDRIQData); diff --git a/src/IOThread.h b/src/IOThread.h index 734b37a..743635c 100644 --- a/src/IOThread.h +++ b/src/IOThread.h @@ -5,6 +5,7 @@ #include #include #include +#include #include "ThreadQueue.h" @@ -63,6 +64,10 @@ public: return buf; } +// if (outputBuffers.size() > 100) { +// std::cout << "Buffer over 100.." << std::endl; +// } + buf = new BufferType(); outputBuffers.push_back(buf); diff --git a/src/demod/DemodulatorThread.cpp b/src/demod/DemodulatorThread.cpp index d987a15..becc261 100644 --- a/src/demod/DemodulatorThread.cpp +++ b/src/demod/DemodulatorThread.cpp @@ -94,7 +94,7 @@ void DemodulatorThread::run() { while (!terminated) { DemodulatorThreadPostIQData *inp; iqInputQueue->pop(inp); - std::lock_guard < std::mutex > lock(inp->m_mutex); +// std::lock_guard < std::mutex > lock(inp->m_mutex); int bufSize = inp->data.size(); diff --git a/src/sdr/SDRPostThread.cpp b/src/sdr/SDRPostThread.cpp index 7a999f9..a9955cd 100644 --- a/src/sdr/SDRPostThread.cpp +++ b/src/sdr/SDRPostThread.cpp @@ -86,6 +86,8 @@ void SDRPostThread::run() { std::vector fpData; std::vector dataOut; + iqDataInQueue->set_max_num_items(30); + while (!terminated) { SDRThreadIQData *data_in; @@ -203,8 +205,12 @@ void SDRPostThread::run() { } if (iqDataOutQueue != NULL) { - iqDataOutQueue->push(demodDataOut); - pushedData = true; + if (!iqDataOutQueue->full()) { + iqDataOutQueue->push(demodDataOut); + pushedData = true; + } else { + demodDataOut->decRefCount(); + } } if (!pushedData && iqDataOutQueue == NULL) {