From c180247db2b34a1c9db1224a12dd8d0d26e52d18 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Mon, 19 Oct 2026 11:34:45 +0200 Subject: [PATCH] Telemetry: Make isReportingCrash static to avoid creating the singleton in the event filter RiaGuiApplication::notify queried RiaOpenTelemetryManager::instance() for every event. Make the crash flag a static atomic so the check never constructs the manager or takes part in its initialization. --- ApplicationLibCode/Application/RiaGuiApplication.cpp | 2 +- .../Application/Tools/Telemetry/RiaOpenTelemetryManager.cpp | 2 +- .../Application/Tools/Telemetry/RiaOpenTelemetryManager.h | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ApplicationLibCode/Application/RiaGuiApplication.cpp b/ApplicationLibCode/Application/RiaGuiApplication.cpp index 9da72ad9c0..2fb95e1341 100644 --- a/ApplicationLibCode/Application/RiaGuiApplication.cpp +++ b/ApplicationLibCode/Application/RiaGuiApplication.cpp @@ -1883,7 +1883,7 @@ bool RiaGuiApplication::notify( QObject* receiver, QEvent* event ) // The crash handler pumps the event loop to send the crash report. Repainting a widget there can re-enter the // faulting code and crash again, replacing the original report with one blaming the crash handler. - if ( RiaOpenTelemetryManager::instance().isReportingCrash() && ( receiver->isWidgetType() || receiver->isWindowType() ) ) + if ( RiaOpenTelemetryManager::isReportingCrash() && ( receiver->isWidgetType() || receiver->isWindowType() ) ) { return false; } diff --git a/ApplicationLibCode/Application/Tools/Telemetry/RiaOpenTelemetryManager.cpp b/ApplicationLibCode/Application/Tools/Telemetry/RiaOpenTelemetryManager.cpp index 6c77bd953b..6d95d2f8c5 100644 --- a/ApplicationLibCode/Application/Tools/Telemetry/RiaOpenTelemetryManager.cpp +++ b/ApplicationLibCode/Application/Tools/Telemetry/RiaOpenTelemetryManager.cpp @@ -456,7 +456,7 @@ bool RiaOpenTelemetryManager::isInitialized() const //-------------------------------------------------------------------------------------------------- /// True while the crash handler sends a crash report. Never reset, the process exits afterwards. //-------------------------------------------------------------------------------------------------- -bool RiaOpenTelemetryManager::isReportingCrash() const +bool RiaOpenTelemetryManager::isReportingCrash() { return m_isReportingCrash.load(); } diff --git a/ApplicationLibCode/Application/Tools/Telemetry/RiaOpenTelemetryManager.h b/ApplicationLibCode/Application/Tools/Telemetry/RiaOpenTelemetryManager.h index f7ab75a7c8..cfd7090f8c 100644 --- a/ApplicationLibCode/Application/Tools/Telemetry/RiaOpenTelemetryManager.h +++ b/ApplicationLibCode/Application/Tools/Telemetry/RiaOpenTelemetryManager.h @@ -110,8 +110,8 @@ public: // Configuration bool isEnabled() const; - bool isInitialized() const; - bool isReportingCrash() const; + bool isInitialized() const; + static bool isReportingCrash(); void setErrorCallback( ErrorCallback callback ); void setUsername( const std::string& username ); @@ -181,7 +181,7 @@ private: std::atomic m_enabled{ false }; std::atomic m_isShuttingDown{ false }; std::atomic m_circuitBreakerOpen{ false }; - std::atomic m_isReportingCrash{ false }; + static inline std::atomic m_isReportingCrash{ false }; // Qt networking and timer QNetworkAccessManager* m_networkAccessManager{ nullptr };