aboutsummaryrefslogtreecommitdiffstats
path: root/src/shared
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2023-10-12 14:17:17 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2023-11-07 14:14:25 +0000
commitb98be3d5a046f983f0c0f02ef7a7343047729190 (patch)
tree1dc98beabdec078be40755d496d01b4d13ed9d71 /src/shared
parentc50f9aa45e80969ae50944d51e8580d778fa2ad3 (diff)
FreezeDetector: Don't report nested calls to notify
Report only top level, otherwise reports may overlap. Change-Id: I30c2b2ca6368bd43c68ce8275af2e58e0c6c12c5 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/qtsingleapplication/qtsingleapplication.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/shared/qtsingleapplication/qtsingleapplication.cpp b/src/shared/qtsingleapplication/qtsingleapplication.cpp
index c38d568004..ce91306c75 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<QObject> 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<milliseconds>(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);
};