From 44e00e4aeb6a098edb38ce8a045868ed2dc91a6e Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 19 Apr 2017 23:07:32 +0200 Subject: [PATCH] LimeSDR input: start or stop thread only if not started or stopped --- plugins/samplesource/limesdrinput/limesdrinput.cpp | 2 +- plugins/samplesource/limesdrinput/limesdrinputthread.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/samplesource/limesdrinput/limesdrinput.cpp b/plugins/samplesource/limesdrinput/limesdrinput.cpp index 1eb89eed0..f03b75ff0 100644 --- a/plugins/samplesource/limesdrinput/limesdrinput.cpp +++ b/plugins/samplesource/limesdrinput/limesdrinput.cpp @@ -397,7 +397,7 @@ bool LimeSDRInput::applySettings(const LimeSDRInputSettings& settings, bool forc bool threadStopped = false; // QMutexLocker mutexLocker(&m_mutex); - if ((m_deviceShared.m_deviceParams->getDevice() != 0) && m_limeSDRInputThread && m_running && + if ((m_deviceShared.m_deviceParams->getDevice() != 0) && m_limeSDRInputThread && ((m_settings.m_gain != settings.m_gain) || (m_settings.m_devSampleRate != settings.m_devSampleRate) || (m_settings.m_log2HardDecim != settings.m_log2HardDecim) || diff --git a/plugins/samplesource/limesdrinput/limesdrinputthread.cpp b/plugins/samplesource/limesdrinput/limesdrinputthread.cpp index 0da63813a..b338bb533 100644 --- a/plugins/samplesource/limesdrinput/limesdrinputthread.cpp +++ b/plugins/samplesource/limesdrinput/limesdrinputthread.cpp @@ -36,6 +36,8 @@ LimeSDRInputThread::~LimeSDRInputThread() void LimeSDRInputThread::startWork() { + if (m_running) return; // return if running already + m_startWaitMutex.lock(); start(); while(!m_running) @@ -45,6 +47,8 @@ void LimeSDRInputThread::startWork() void LimeSDRInputThread::stopWork() { + if (!m_running) return; // return if not running + m_running = false; wait(); }