mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2025-03-01 08:58:48 -05:00
Fix for an initial priming overload and visuals memory leak
This commit is contained in:
parent
9de7bc95fb
commit
1d5a2f1ac7
@ -78,9 +78,11 @@ bool CubicSDR::OnInit() {
|
|||||||
scopeProcessor.setInput(pipeAudioVisualData);
|
scopeProcessor.setInput(pipeAudioVisualData);
|
||||||
|
|
||||||
// I/Q Data
|
// I/Q Data
|
||||||
pipeSDRIQData = new SDRThreadIQDataQueue;
|
pipeSDRIQData = new SDRThreadIQDataQueue();
|
||||||
pipeSDRCommand = new SDRThreadCommandQueue();
|
pipeSDRCommand = new SDRThreadCommandQueue();
|
||||||
|
|
||||||
|
pipeSDRIQData->set_max_num_items(1);
|
||||||
|
|
||||||
sdrThread = new SDRThread();
|
sdrThread = new SDRThread();
|
||||||
sdrThread->setInputQueue("SDRCommandQueue",pipeSDRCommand);
|
sdrThread->setInputQueue("SDRCommandQueue",pipeSDRCommand);
|
||||||
sdrThread->setOutputQueue("IQDataOutput",pipeSDRIQData);
|
sdrThread->setOutputQueue("IQDataOutput",pipeSDRIQData);
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include <deque>
|
#include <deque>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
#include "ThreadQueue.h"
|
#include "ThreadQueue.h"
|
||||||
|
|
||||||
@ -63,6 +64,10 @@ public:
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if (outputBuffers.size() > 100) {
|
||||||
|
// std::cout << "Buffer over 100.." << std::endl;
|
||||||
|
// }
|
||||||
|
|
||||||
buf = new BufferType();
|
buf = new BufferType();
|
||||||
outputBuffers.push_back(buf);
|
outputBuffers.push_back(buf);
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ void DemodulatorThread::run() {
|
|||||||
while (!terminated) {
|
while (!terminated) {
|
||||||
DemodulatorThreadPostIQData *inp;
|
DemodulatorThreadPostIQData *inp;
|
||||||
iqInputQueue->pop(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();
|
int bufSize = inp->data.size();
|
||||||
|
|
||||||
|
@ -86,6 +86,8 @@ void SDRPostThread::run() {
|
|||||||
std::vector<liquid_float_complex> fpData;
|
std::vector<liquid_float_complex> fpData;
|
||||||
std::vector<liquid_float_complex> dataOut;
|
std::vector<liquid_float_complex> dataOut;
|
||||||
|
|
||||||
|
iqDataInQueue->set_max_num_items(30);
|
||||||
|
|
||||||
while (!terminated) {
|
while (!terminated) {
|
||||||
SDRThreadIQData *data_in;
|
SDRThreadIQData *data_in;
|
||||||
|
|
||||||
@ -203,8 +205,12 @@ void SDRPostThread::run() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (iqDataOutQueue != NULL) {
|
if (iqDataOutQueue != NULL) {
|
||||||
|
if (!iqDataOutQueue->full()) {
|
||||||
iqDataOutQueue->push(demodDataOut);
|
iqDataOutQueue->push(demodDataOut);
|
||||||
pushedData = true;
|
pushedData = true;
|
||||||
|
} else {
|
||||||
|
demodDataOut->decRefCount();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pushedData && iqDataOutQueue == NULL) {
|
if (!pushedData && iqDataOutQueue == NULL) {
|
||||||
|
Loading…
Reference in New Issue
Block a user