summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qproperty_p.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-11-25 13:13:37 +0100
committerLars Knoll <lars.knoll@qt.io>2020-11-26 21:40:03 +0100
commite8ef871e3522f340b4efe32382af7e35ef908665 (patch)
treeeb119447644c0e98b6328328107eccd7da07c90f /src/corelib/kernel/qproperty_p.h
parentc63901c5f3195596eb81e5f5ae5483ca5a0b6d35 (diff)
Simplify the safeguarding logic in notify()
The logic in notify() was doing quite a bit more work than it needed to. By inserting a dummy node after the current one instead of replacing it, we can avoid half of the data shuffling that has been happening and also don't need a back pointer when executing the notification. Also avoid calling a semi expensive destructor of QPropertyObserver. Reduces the overhead of notify() by ~30%. Pick-to: dev 6.0.0 Change-Id: I7ce16bcf9cd9c4368c18bf875fc959223452fd4f Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'src/corelib/kernel/qproperty_p.h')
-rw-r--r--src/corelib/kernel/qproperty_p.h7
1 files changed, 0 insertions, 7 deletions
diff --git a/src/corelib/kernel/qproperty_p.h b/src/corelib/kernel/qproperty_p.h
index 6bc65e986d..67ce9a74f2 100644
--- a/src/corelib/kernel/qproperty_p.h
+++ b/src/corelib/kernel/qproperty_p.h
@@ -245,13 +245,6 @@ public:
void clearDependencyObservers() {
for (size_t i = 0; i < qMin(dependencyObserverCount, inlineDependencyObservers.size()); ++i) {
QPropertyObserverPointer p{&inlineDependencyObservers[i]};
- if (p.ptr->next.tag() == QPropertyObserver::ActivelyExecuting) {
- *(p.ptr->nodeState) = nullptr;
- p.ptr->nodeState = nullptr;
-
- // set tag to "safer" value, as we return the same observer pointer from allocateDependencyObserver
- p.ptr->next.setTag(QPropertyObserver::ObserverNotifiesChangeHandler);
- }
p.unlink();
}
if (heapObservers)