diff --git a/src/CubicSDR.cpp b/src/CubicSDR.cpp index 38723f4..c926d8f 100644 --- a/src/CubicSDR.cpp +++ b/src/CubicSDR.cpp @@ -298,6 +298,8 @@ int CubicSDR::OnExit() { if (t_SDR) { t_SDR->join(); + delete t_SDR; + t_SDR = nullptr; } std::cout << "Terminating SDR post-processing thread.." << std::endl; @@ -444,11 +446,6 @@ void CubicSDR::sdrThreadNotify(SDRThread::SDRThreadState state, std::string mess if (state == SDRThread::SDR_THREAD_MESSAGE) { notifyMessage = message; } - if (state == SDRThread::SDR_THREAD_TERMINATED) { - t_SDR->join(); - delete t_SDR; - t_SDR = nullptr; - } if (state == SDRThread::SDR_THREAD_FAILED) { notifyMessage = message; // wxMessageDialog *info; diff --git a/src/sdr/SoapySDRThread.cpp b/src/sdr/SoapySDRThread.cpp index f4f9083..db450f9 100644 --- a/src/sdr/SoapySDRThread.cpp +++ b/src/sdr/SoapySDRThread.cpp @@ -378,11 +378,6 @@ void SDRThread::run() { } std::cout << "SDR thread done." << std::endl; - - if (!stopping.load()) { - stopping.store(true); - wxGetApp().sdrThreadNotify(SDRThread::SDR_THREAD_TERMINATED, "Done."); - } } diff --git a/src/sdr/SoapySDRThread.h b/src/sdr/SoapySDRThread.h index 0a04728..21d6b37 100644 --- a/src/sdr/SoapySDRThread.h +++ b/src/sdr/SoapySDRThread.h @@ -48,7 +48,7 @@ private: public: SDRThread(); ~SDRThread(); - enum SDRThreadState { SDR_THREAD_MESSAGE, SDR_THREAD_INITIALIZED, SDR_THREAD_TERMINATED, SDR_THREAD_FAILED }; + enum SDRThreadState { SDR_THREAD_MESSAGE, SDR_THREAD_INITIALIZED, SDR_THREAD_FAILED }; virtual void run();