diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/kernel/qproperty.cpp | 18 | ||||
-rw-r--r-- | src/corelib/kernel/qproperty_p.h | 18 |
2 files changed, 20 insertions, 16 deletions
diff --git a/src/corelib/kernel/qproperty.cpp b/src/corelib/kernel/qproperty.cpp index 2af8657758..55e30c3069 100644 --- a/src/corelib/kernel/qproperty.cpp +++ b/src/corelib/kernel/qproperty.cpp @@ -245,6 +245,24 @@ QPropertyBindingPrivate::~QPropertyBindingPrivate() + QPropertyBindingPrivate::getSizeEnsuringAlignment()); } +void QPropertyBindingPrivate::clearDependencyObservers() { + for (size_t i = 0; i < qMin(dependencyObserverCount, inlineDependencyObservers.size()); ++i) { + QPropertyObserverPointer p{&inlineDependencyObservers[i]}; + p.unlink_fast(); + } + if (heapObservers) + heapObservers->clear(); + dependencyObserverCount = 0; +} + +QPropertyObserverPointer QPropertyBindingPrivate::allocateDependencyObserver_slow() +{ + ++dependencyObserverCount; + if (!heapObservers) + heapObservers.reset(new std::vector<QPropertyObserver>()); + return {&heapObservers->emplace_back()}; +} + void QPropertyBindingPrivate::unlinkAndDeref() { clearDependencyObservers(); diff --git a/src/corelib/kernel/qproperty_p.h b/src/corelib/kernel/qproperty_p.h index 9380cc3e6d..00e811f4c3 100644 --- a/src/corelib/kernel/qproperty_p.h +++ b/src/corelib/kernel/qproperty_p.h @@ -295,15 +295,7 @@ public: return observers; } - void clearDependencyObservers() { - for (size_t i = 0; i < qMin(dependencyObserverCount, inlineDependencyObservers.size()); ++i) { - QPropertyObserverPointer p{&inlineDependencyObservers[i]}; - p.unlink_fast(); - } - if (heapObservers) - heapObservers->clear(); - dependencyObserverCount = 0; - } + void clearDependencyObservers(); Q_ALWAYS_INLINE QPropertyObserverPointer allocateDependencyObserver() { if (dependencyObserverCount < inlineDependencyObservers.size()) { @@ -313,13 +305,7 @@ public: return allocateDependencyObserver_slow(); } - Q_NEVER_INLINE QPropertyObserverPointer allocateDependencyObserver_slow() - { - ++dependencyObserverCount; - if (!heapObservers) - heapObservers.reset(new std::vector<QPropertyObserver>()); - return {&heapObservers->emplace_back()}; - } + QPropertyObserverPointer allocateDependencyObserver_slow(); QPropertyBindingSourceLocation sourceLocation() const { |