diff options
author | Lars Knoll <lars.knoll@qt.io> | 2020-11-25 13:13:37 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2020-11-26 21:40:03 +0100 |
commit | e8ef871e3522f340b4efe32382af7e35ef908665 (patch) | |
tree | eb119447644c0e98b6328328107eccd7da07c90f /src/corelib/kernel/qproperty_p.h | |
parent | c63901c5f3195596eb81e5f5ae5483ca5a0b6d35 (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.h | 7 |
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) |