diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/kernel/qproperty.cpp | 15 | ||||
-rw-r--r-- | src/corelib/kernel/qproperty_p.h | 4 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/corelib/kernel/qproperty.cpp b/src/corelib/kernel/qproperty.cpp index 0534749afa..686ec484ca 100644 --- a/src/corelib/kernel/qproperty.cpp +++ b/src/corelib/kernel/qproperty.cpp @@ -1667,4 +1667,19 @@ void restoreBindingStatus(BindingEvaluationState *status) bindingStatus.currentlyEvaluatingBinding = status; } +namespace QtPrivate { +/*! + \internal + This function can be used to detect whether we are currently + evaluating a binding. This can e.g. be used to defer the allocation + of extra data for a QPropertyBindingStorage in a getter. + Note that this function accesses TLS storage, and is therefore soemwhat + costly to call. + */ +bool isAnyBindingEvaluating() +{ + return bindingStatus.currentlyEvaluatingBinding != nullptr; +} +} // namespace QtPrivate end + QT_END_NAMESPACE diff --git a/src/corelib/kernel/qproperty_p.h b/src/corelib/kernel/qproperty_p.h index 6ff1e8e71e..27cb8c907f 100644 --- a/src/corelib/kernel/qproperty_p.h +++ b/src/corelib/kernel/qproperty_p.h @@ -59,6 +59,10 @@ QT_BEGIN_NAMESPACE +namespace QtPrivate { + Q_CORE_EXPORT bool isAnyBindingEvaluating(); +} + // Keep all classes related to QProperty in one compilation unit. Performance of this code is crucial and // we need to allow the compiler to inline where it makes sense. |