diff options
| author | Marc Mutz <marc.mutz@qt.io> | 2022-05-17 17:01:52 +0200 |
|---|---|---|
| committer | Marc Mutz <marc.mutz@qt.io> | 2022-05-20 20:07:37 +0200 |
| commit | e02a171a47e87048d16faf7167c0fecd46a176b5 (patch) | |
| tree | 4f644fcfc101611110e483bfcaf5b124bae3d71d /src/corelib/kernel/qobject.cpp | |
| parent | 37f277f3d77c94a2d827faf7f1ea5a5b15d1b5e7 (diff) | |
Optimize reads from QObjectPrivate::threadData
The implicit conversion operator from QAtomicPointer<T> → T* performs
a loadAcquire().
In the cases of this patch, we're only comparing pointer values to
check whether QObject thread affinities are compatible, so relaxed
loads suffice.
Pick-to: 6.3
Change-Id: If19124778b4770d86baeaeb3c91214e47881b288
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Diffstat (limited to 'src/corelib/kernel/qobject.cpp')
| -rw-r--r-- | src/corelib/kernel/qobject.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 3254f2a9feb..e438c115135 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -2413,7 +2413,7 @@ void QObjectPrivate::setParent_helper(QObject *o) parent = o; if (parent) { // object hierarchies are constrained to a single thread - if (threadData != parent->d_func()->threadData) { + if (threadData.loadRelaxed() != parent->d_func()->threadData.loadRelaxed()) { qWarning("QObject::setParent: Cannot set parent, new parent is in a different thread"); parent = nullptr; return; @@ -2475,7 +2475,7 @@ void QObject::installEventFilter(QObject *obj) Q_D(QObject); if (!obj) return; - if (d->threadData != obj->d_func()->threadData) { + if (d->threadData.loadRelaxed() != obj->d_func()->threadData.loadRelaxed()) { qWarning("QObject::installEventFilter(): Cannot filter events for objects in a different thread."); return; } |
