diff --git a/scwx-qt/source/scwx/qt/map/alert_layer.cpp b/scwx-qt/source/scwx/qt/map/alert_layer.cpp index 7bea5938..4429eeb8 100644 --- a/scwx-qt/source/scwx/qt/map/alert_layer.cpp +++ b/scwx-qt/source/scwx/qt/map/alert_layer.cpp @@ -6,8 +6,8 @@ #include #include #include -#include +#include #include #include #include @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -22,7 +23,6 @@ #include #include #include -#include namespace scwx::qt::map { @@ -153,9 +153,11 @@ public: ~Impl() { std::unique_lock refreshLock(refreshMutex_); + refreshEnabled_ = false; refreshTimer_.cancel(); refreshLock.unlock(); + threadPool_.stop(); threadPool_.join(); receiver_ = nullptr; @@ -213,6 +215,7 @@ public: AlertLayer* self_; + std::atomic refreshEnabled_ {true}; boost::asio::system_timer refreshTimer_ {threadPool_}; std::mutex refreshMutex_; @@ -582,7 +585,8 @@ void AlertLayer::Impl::ScheduleRefresh() // Expires at the top of the next minute std::chrono::system_clock::time_point now = - std::chrono::floor(scwx::util::time::now()); + std::chrono::floor( + std::chrono::system_clock::now()); refreshTimer_.expires_at(now + 1min); refreshTimer_.async_wait( @@ -599,7 +603,11 @@ void AlertLayer::Impl::ScheduleRefresh() else { Q_EMIT self_->NeedsRendering(); - ScheduleRefresh(); + + if (refreshEnabled_) + { + ScheduleRefresh(); + } } }); }