From 1c75f8d3262879e4b0147743efa19e99a5ee4a4c Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 8 Oct 2022 23:29:42 +0200 Subject: [PATCH] TestSource: moved thread start and quit/wait to start and stop methods respectively --- .../testsource/testsourceinput.cpp | 46 ++++++++----------- .../samplesource/testsource/testsourceinput.h | 2 - 2 files changed, 20 insertions(+), 28 deletions(-) diff --git a/plugins/samplesource/testsource/testsourceinput.cpp b/plugins/samplesource/testsource/testsourceinput.cpp index ec035d365..1cd98c336 100644 --- a/plugins/samplesource/testsource/testsourceinput.cpp +++ b/plugins/samplesource/testsource/testsourceinput.cpp @@ -47,13 +47,6 @@ TestSourceInput::TestSourceInput(DeviceAPI *deviceAPI) : m_sampleFifo.setLabel(m_deviceDescription); m_deviceAPI->setNbSourceStreams(1); - if (!m_sampleFifo.setSize(96000 * 4)) { - qCritical("TestSourceInput::TestSourceInput: Could not allocate SampleFifo"); - } - - m_testSourceWorker = new TestSourceWorker(&m_sampleFifo); - m_testSourceWorker->moveToThread(&m_testSourceWorkerThread); - m_networkManager = new QNetworkAccessManager(); QObject::connect( m_networkManager, @@ -76,8 +69,6 @@ TestSourceInput::~TestSourceInput() if (m_running) { stop(); } - - m_testSourceWorker->deleteLater(); } void TestSourceInput::destroy() @@ -98,13 +89,22 @@ bool TestSourceInput::start() stop(); } + if (!m_sampleFifo.setSize(96000 * 4)) + { + qCritical("TestSourceInput::TestSourceInput: Could not allocate SampleFifo"); + return false; + } + + m_testSourceWorker = new TestSourceWorker(&m_sampleFifo); + m_testSourceWorker->moveToThread(&m_testSourceWorkerThread); m_testSourceWorker->setSamplerate(m_settings.m_sampleRate); - startWorker(); + m_testSourceWorker->startWork(); + m_testSourceWorkerThread.start(); + m_running = true; mutexLocker.unlock(); applySettings(m_settings, true); - m_running = true; return true; } @@ -112,24 +112,18 @@ bool TestSourceInput::start() void TestSourceInput::stop() { QMutexLocker mutexLocker(&m_mutex); - stopWorker(); - m_running = false; -} + m_running = false; -void TestSourceInput::startWorker() -{ - m_testSourceWorker->startWork(); - m_testSourceWorkerThread.start(); + if (m_testSourceWorker) + { + m_testSourceWorker->stopWork(); + m_testSourceWorkerThread.quit(); + m_testSourceWorkerThread.wait(); + delete m_testSourceWorker; + m_testSourceWorker = nullptr; + } } -void TestSourceInput::stopWorker() -{ - m_testSourceWorker->stopWork(); - m_testSourceWorkerThread.quit(); - m_testSourceWorkerThread.wait(); -} - - QByteArray TestSourceInput::serialize() const { return m_settings.serialize(); diff --git a/plugins/samplesource/testsource/testsourceinput.h b/plugins/samplesource/testsource/testsourceinput.h index fd6d41f1d..1dbed6ddc 100644 --- a/plugins/samplesource/testsource/testsourceinput.h +++ b/plugins/samplesource/testsource/testsourceinput.h @@ -137,8 +137,6 @@ private: QNetworkAccessManager *m_networkManager; QNetworkRequest m_networkRequest; - void startWorker(); - void stopWorker(); bool applySettings(const TestSourceSettings& settings, bool force); void webapiReverseSendSettings(QList& deviceSettingsKeys, const TestSourceSettings& settings, bool force); void webapiReverseSendStartStop(bool start);