mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-09-02 13:17:48 -04:00
TestMI: updated threading model. Part of #1346
This commit is contained in:
parent
621f6a667e
commit
0e236f8acc
@ -86,13 +86,13 @@ void TestMI::init()
|
|||||||
|
|
||||||
bool TestMI::startRx()
|
bool TestMI::startRx()
|
||||||
{
|
{
|
||||||
qDebug("TestMI::startRx");
|
|
||||||
QMutexLocker mutexLocker(&m_mutex);
|
QMutexLocker mutexLocker(&m_mutex);
|
||||||
|
|
||||||
if (m_running) {
|
if (m_running) {
|
||||||
stopRx();
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qDebug("TestMI::startRx");
|
||||||
m_testSourceWorkers.push_back(new TestMIWorker(&m_sampleMIFifo, 0));
|
m_testSourceWorkers.push_back(new TestMIWorker(&m_sampleMIFifo, 0));
|
||||||
m_testSourceWorkerThreads.push_back(new QThread());
|
m_testSourceWorkerThreads.push_back(new QThread());
|
||||||
m_testSourceWorkers.back()->moveToThread(m_testSourceWorkerThreads.back());
|
m_testSourceWorkers.back()->moveToThread(m_testSourceWorkerThreads.back());
|
||||||
@ -104,10 +104,10 @@ bool TestMI::startRx()
|
|||||||
m_testSourceWorkers.back()->setSamplerate(m_settings.m_streams[1].m_sampleRate);
|
m_testSourceWorkers.back()->setSamplerate(m_settings.m_streams[1].m_sampleRate);
|
||||||
|
|
||||||
startWorkers();
|
startWorkers();
|
||||||
|
m_running = true;
|
||||||
mutexLocker.unlock();
|
mutexLocker.unlock();
|
||||||
|
|
||||||
applySettings(m_settings, true);
|
applySettings(m_settings, true);
|
||||||
m_running = true;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -120,22 +120,18 @@ bool TestMI::startTx()
|
|||||||
|
|
||||||
void TestMI::stopRx()
|
void TestMI::stopRx()
|
||||||
{
|
{
|
||||||
qDebug("TestMI::stopRx");
|
|
||||||
QMutexLocker mutexLocker(&m_mutex);
|
QMutexLocker mutexLocker(&m_mutex);
|
||||||
stopWorkers();
|
|
||||||
|
|
||||||
std::vector<TestMIWorker*>::iterator itW = m_testSourceWorkers.begin();
|
if (!m_running) {
|
||||||
std::vector<QThread*>::iterator itT = m_testSourceWorkerThreads.begin();
|
return;
|
||||||
|
|
||||||
for (; (itW != m_testSourceWorkers.end()) && (itT != m_testSourceWorkerThreads.end()); ++itW, ++itT)
|
|
||||||
{
|
|
||||||
(*itW)->deleteLater();
|
|
||||||
delete (*itT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qDebug("TestMI::stopRx");
|
||||||
|
m_running = false;
|
||||||
|
stopWorkers();
|
||||||
|
|
||||||
m_testSourceWorkers.clear();
|
m_testSourceWorkers.clear();
|
||||||
m_testSourceWorkerThreads.clear();
|
m_testSourceWorkerThreads.clear();
|
||||||
m_running = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestMI::stopTx()
|
void TestMI::stopTx()
|
||||||
@ -150,6 +146,8 @@ void TestMI::startWorkers()
|
|||||||
|
|
||||||
for (; (itW != m_testSourceWorkers.end()) && (itT != m_testSourceWorkerThreads.end()); ++itW, ++itT)
|
for (; (itW != m_testSourceWorkers.end()) && (itT != m_testSourceWorkerThreads.end()); ++itW, ++itT)
|
||||||
{
|
{
|
||||||
|
QObject::connect(*itT, &QThread::finished, *itW, &QObject::deleteLater);
|
||||||
|
QObject::connect(*itT, &QThread::finished, *itT, &QThread::deleteLater);
|
||||||
(*itW)->startWork();
|
(*itW)->startWork();
|
||||||
(*itT)->start();
|
(*itT)->start();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user