diff --git a/src/blackmisc/simulation/backgroundvalidation.cpp b/src/blackmisc/simulation/backgroundvalidation.cpp index 5487fda6f..cf54dd6d2 100644 --- a/src/blackmisc/simulation/backgroundvalidation.cpp +++ b/src/blackmisc/simulation/backgroundvalidation.cpp @@ -110,6 +110,7 @@ namespace BlackMisc m_inWork = true; emit this->validating(true); + const bool isTimerBased = (QObject::sender() == &m_updateTimer); CAircraftModelList valid; CAircraftModelList invalid; CStatusMessageList msgs; @@ -154,11 +155,22 @@ namespace BlackMisc while (false); m_inWork = false; + if (isTimerBased) + { + m_timerBasedRuns++; + + // stop timer after some runs + if (m_timerBasedRuns > 3) + { + m_updateTimer.stop(); + } + } + emit this->validating(false); if (validated) { const bool e = !onlyErrorsAndWarnings || (!invalid.isEmpty() || msgs.hasWarningOrErrorMessages()); - if (e) { emit this->validated(simulator, valid, invalid, wasStopped, msgs); } + if (e || !isTimerBased) { emit this->validated(simulator, valid, invalid, wasStopped, msgs); } } } } // ns diff --git a/src/blackmisc/simulation/backgroundvalidation.h b/src/blackmisc/simulation/backgroundvalidation.h index 5b2ed640b..ae8600998 100644 --- a/src/blackmisc/simulation/backgroundvalidation.h +++ b/src/blackmisc/simulation/backgroundvalidation.h @@ -87,6 +87,7 @@ namespace BlackMisc CSimulatorInfo m_lastResultSimulator; CStatusMessageList m_lastResultMsgs; bool m_lastResultWasStopped = false; + std::atomic_int m_timerBasedRuns{0}; QMap m_checkedSimulatorMsgs; //!< all simulators ever checked CSetting m_matchingSettings { this }; //!< settings