1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-11-26 17:58:43 -05:00

BladeRF2 input: more debug messages. Fixed thread channel destructor: do not delete the sample FIFO that is not owned by the thread

This commit is contained in:
f4exb 2018-09-26 03:07:55 +02:00
parent 4634fb481d
commit 07bd587f6c
2 changed files with 13 additions and 5 deletions

View File

@ -304,10 +304,14 @@ bool BladeRF2Input::start()
if (bladerf2InputThread) // if thread is already allocated
{
qDebug("BladerfInput::start: thread is owned by a buddy");
int nbOriginalChannels = bladerf2InputThread->getNbChannels();
if (m_deviceShared.m_channel+1 > nbOriginalChannels) // expansion by deleting and re-creating the thread
{
qDebug("BladerfInput::start: expand channels. Re-allocate thread and take ownership");
SampleSinkFifo **fifos = new SampleSinkFifo*[nbOriginalChannels];
unsigned int *log2Decims = new unsigned int[nbOriginalChannels];
int *fcPoss = new int[nbOriginalChannels];
@ -341,9 +345,14 @@ bool BladeRF2Input::start()
needsStart = true;
}
else
{
qDebug("BladerfInput::start: keep buddy thread");
}
}
else // first allocation
{
qDebug("BladerfInput::start: allocate thread and take ownership");
bladerf2InputThread = new BladeRF2InputThread(m_deviceShared.m_dev->getDev(), m_deviceShared.m_channel+1);
m_thread = bladerf2InputThread; // take ownership
needsStart = true;
@ -382,6 +391,7 @@ void BladeRF2Input::stop()
if (nbOriginalChannels == 1) // SI mode => just stop and delete the thread
{
qDebug("BladeRF2Input::stop: SI mode. Just stop and delete the thread");
bladerf2InputThread->stopWork();
delete bladerf2InputThread;
m_thread = 0;
@ -396,6 +406,7 @@ void BladeRF2Input::stop()
}
else if (m_deviceShared.m_channel == nbOriginalChannels - 1) // remove last MI channel => reduce by deleting and re-creating the thread
{
qDebug("BladeRF2Input::stop: MI mode. Reduce by deleting and re-creating the thread");
bladerf2InputThread->stopWork();
SampleSinkFifo **fifos = new SampleSinkFifo*[nbOriginalChannels-1];
unsigned int *log2Decims = new unsigned int[nbOriginalChannels-1];
@ -431,6 +442,7 @@ void BladeRF2Input::stop()
}
else // remove channel from existing thread
{
qDebug("BladeRF2Input::stop: MI mode. Thread not owned by source. Just remove FIFO reference");
bladerf2InputThread->setFifo(m_deviceShared.m_channel, 0); // remove FIFO
}

View File

@ -66,11 +66,7 @@ private:
{}
~Channel()
{
if (m_sampleFifo) {
delete[] m_sampleFifo;
}
}
{}
};
QMutex m_startWaitMutex;