From b98be3d5a046f983f0c0f02ef7a7343047729190 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Thu, 12 Oct 2023 14:17:17 +0200 Subject: [PATCH] FreezeDetector: Don't report nested calls to notify Report only top level, otherwise reports may overlap. Change-Id: I30c2b2ca6368bd43c68ce8275af2e58e0c6c12c5 Reviewed-by: Qt CI Bot Reviewed-by: hjk --- src/shared/qtsingleapplication/qtsingleapplication.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/shared/qtsingleapplication/qtsingleapplication.cpp b/src/shared/qtsingleapplication/qtsingleapplication.cpp index c38d568004c..ce91306c75f 100644 --- a/src/shared/qtsingleapplication/qtsingleapplication.cpp +++ b/src/shared/qtsingleapplication/qtsingleapplication.cpp @@ -182,13 +182,17 @@ public: void setFreezeTreshold(std::chrono::milliseconds freezeAbove) { m_threshold = freezeAbove; } bool notify(QObject *receiver, QEvent *event) override { + if (m_inNotify) + return QtSingleApplication::notify(receiver, event); using namespace std::chrono; const auto start = system_clock::now(); const QPointer p(receiver); const QString className = QLatin1String(receiver->metaObject()->className()); const QString name = receiver->objectName(); + m_inNotify = true; const bool ret = QtSingleApplication::notify(receiver, event); + m_inNotify = false; const auto end = system_clock::now(); const auto freeze = duration_cast(end - start); @@ -207,6 +211,7 @@ public: } private: + bool m_inNotify = false; const QString m_align; std::chrono::milliseconds m_threshold = std::chrono::milliseconds(100); };