diff --git a/gui/QT/widget/vuMeterWidget.cpp b/gui/QT/widget/vuMeterWidget.cpp index 9e5197817..f787fb441 100644 --- a/gui/QT/widget/vuMeterWidget.cpp +++ b/gui/QT/widget/vuMeterWidget.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -11,16 +12,12 @@ namespace{ -ug_connection *connectLoop(int port){ - const int max_tries = 2; - int tries = 0; - +ug_connection *connectLoop(int port, const std::atomic& should_exit){ ug_connection *connection = nullptr; connection = ug_control_connection_init(port); - while(!connection && tries < max_tries){ + while(!connection && !should_exit){ std::this_thread::sleep_for (std::chrono::seconds(2)); connection = ug_control_connection_init(port); - tries++; } return connection; @@ -192,7 +189,7 @@ void VuMeterWidget::connect_ug(){ c = future_connection.get(); } } else { - future_connection = std::async(std::launch::async, connectLoop, port); + future_connection = std::async(std::launch::async, connectLoop, port, std::ref(should_exit)); } if(!c) diff --git a/gui/QT/widget/vuMeterWidget.hpp b/gui/QT/widget/vuMeterWidget.hpp index 0b7764fd3..01ff96352 100644 --- a/gui/QT/widget/vuMeterWidget.hpp +++ b/gui/QT/widget/vuMeterWidget.hpp @@ -5,6 +5,7 @@ #include #include #include +#include #include @@ -31,6 +32,7 @@ public: } ~VuMeterWidget(){ + should_exit = true; ug_control_cleanup(); } @@ -41,6 +43,7 @@ private: QTimer timer; std::unique_ptr connection; std::future future_connection; + std::atomic should_exit = false; int port;