diff --git a/CMakeLists.txt b/CMakeLists.txt index 414c916..972c167 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required (VERSION 2.8) SET(CUBICSDR_VERSION_MAJOR "0") SET(CUBICSDR_VERSION_MINOR "1") -SET(CUBICSDR_VERSION_PATCH "11") +SET(CUBICSDR_VERSION_PATCH "12") SET(CUBICSDR_VERSION_REL "alpha") SET(CUBICSDR_VERSION "${CUBICSDR_VERSION_MAJOR}.${CUBICSDR_VERSION_MINOR}.${CUBICSDR_VERSION_PATCH}-${CUBICSDR_VERSION_REL}") diff --git a/src/CubicSDR.cpp b/src/CubicSDR.cpp index bad8c4c..b215d2a 100644 --- a/src/CubicSDR.cpp +++ b/src/CubicSDR.cpp @@ -112,9 +112,9 @@ long long strToFrequency(std::string freqStr) { } -CubicSDR::CubicSDR() : appframe(NULL), m_glContext(NULL), frequency(0), offset(0), ppm(0), snap(1), sampleRate(0), directSamplingMode(0), +CubicSDR::CubicSDR() : appframe(NULL), m_glContext(NULL), frequency(0), offset(0), ppm(0), snap(1), sampleRate(DEFAULT_SAMPLE_RATE), directSamplingMode(0), sdrThread(NULL), sdrPostThread(NULL), spectrumVisualThread(NULL), demodVisualThread(NULL), pipeSDRIQData(NULL), pipeIQVisualData(NULL), pipeAudioVisualData(NULL), t_SDR(NULL), t_PostSDR(NULL) { - + sampleRateInitialized.store(false); } @@ -412,8 +412,9 @@ void CubicSDR::setDevice(SDRDeviceInfo *dev) { // } // Try for a reasonable default sample rate. - if (!sampleRate) { + if (!sampleRateInitialized.load()) { sampleRate = chan->getSampleRateNear(DEFAULT_SAMPLE_RATE); + sampleRateInitialized.store(true); } int rateHigh, rateLow; diff --git a/src/CubicSDR.h b/src/CubicSDR.h index 14f04e9..856e526 100644 --- a/src/CubicSDR.h +++ b/src/CubicSDR.h @@ -142,6 +142,7 @@ private: std::thread *t_SDR, *t_SDREnum, *t_PostSDR, *t_SpectrumVisual, *t_DemodVisual; std::atomic_bool devicesReady; std::atomic_bool deviceSelectorOpen; + std::atomic_bool sampleRateInitialized; std::string notifyMessage; std::mutex notify_busy; }; diff --git a/src/sdr/SoapySDRThread.cpp b/src/sdr/SoapySDRThread.cpp index d9b9bc8..3c17b8d 100644 --- a/src/sdr/SoapySDRThread.cpp +++ b/src/sdr/SoapySDRThread.cpp @@ -11,7 +11,7 @@ SDRThread::SDRThread() : IOThread() { deviceConfig.store(NULL); deviceInfo.store(NULL); - sampleRate.store(0); + sampleRate.store(DEFAULT_SAMPLE_RATE); frequency.store(0); offset.store(0); ppm.store(0); diff --git a/src/sdr/SoapySDRThread.h b/src/sdr/SoapySDRThread.h index 1a1b4e8..d86044f 100644 --- a/src/sdr/SoapySDRThread.h +++ b/src/sdr/SoapySDRThread.h @@ -22,7 +22,7 @@ public: std::vector data; SDRThreadIQData() : - frequency(0), sampleRate(0), dcCorrected(true), numChannels(0) { + frequency(0), sampleRate(DEFAULT_SAMPLE_RATE), dcCorrected(true), numChannels(0) { }