Clarify variable names in QPropertyObserverPointer::notify

In QPropertyObserverPointer::notify and its calling sites,
variable names "alreadyKnownToHaveChanged",
"knownIfPropertyChanged", "propertyChanged", and at its calling site
"knownIfChanged" are used. This is confusing. This patch
changes those four to "knownToHaveChanged". For the logic
implemented it is not necessary to track whether we
have knowledge about having changed and whether it has
actually changed (if we have knowledge) separately.

Change-Id: I90b86b276ab67b2ed70dba4e456cd90220588870
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
bb10
Andreas Buhr 2021-01-08 14:27:52 +01:00
parent 240505457b
commit a75bdfda3d
2 changed files with 10 additions and 14 deletions

View File

@ -112,15 +112,15 @@ void QPropertyBindingPrivate::markDirtyAndNotifyObservers()
eagerlyUpdating = true;
QScopeGuard guard([&](){eagerlyUpdating = false;});
bool knownIfChanged = false;
bool knownToHaveChanged = false;
if (requiresEagerEvaluation()) {
// these are compat properties that we will need to evaluate eagerly
if (!evaluateIfDirtyAndReturnTrueIfValueChanged(propertyDataPtr))
return;
knownIfChanged = true;
knownToHaveChanged = true;
}
if (firstObserver)
firstObserver.notify(this, propertyDataPtr, knownIfChanged);
firstObserver.notify(this, propertyDataPtr, knownToHaveChanged);
if (hasStaticObserver)
staticObserverCallback(propertyDataPtr);
}
@ -276,7 +276,7 @@ QUntypedPropertyBinding QPropertyBindingData::setBinding(const QUntypedPropertyB
newBindingRaw->setEagerlyUpdating(true);
auto changed = newBindingRaw->evaluateIfDirtyAndReturnTrueIfValueChanged(propertyDataPtr);
if (changed)
observer.notify(newBindingRaw, propertyDataPtr, /*alreadyKnownToHaveChanged=*/true);
observer.notify(newBindingRaw, propertyDataPtr, /*knownToHaveChanged=*/true);
newBindingRaw->setEagerlyUpdating(false);
}
} else if (observer) {
@ -523,11 +523,8 @@ struct [[nodiscard]] QPropertyObserverNodeProtector {
ObserverNotifiesChangeHandler case would not work. Thus we instead pass the knowledge of
whether the value has changed we obtained when evaluating the binding eagerly along
*/
void QPropertyObserverPointer::notify(QPropertyBindingPrivate *triggeringBinding, QUntypedPropertyData *propertyDataPtr, bool alreadyKnownToHaveChanged)
void QPropertyObserverPointer::notify(QPropertyBindingPrivate *triggeringBinding, QUntypedPropertyData *propertyDataPtr, bool knownToHaveChanged)
{
bool knownIfPropertyChanged = alreadyKnownToHaveChanged;
bool propertyChanged = true;
auto observer = const_cast<QPropertyObserver*>(ptr);
/*
* The basic idea of the loop is as follows: We iterate over all observers in the linked list,
@ -562,12 +559,11 @@ void QPropertyObserverPointer::notify(QPropertyBindingPrivate *triggeringBinding
}
// both evaluateIfDirtyAndReturnTrueIfValueChanged and handlerToCall might modify the list
QPropertyObserverNodeProtector protector(observer);
if (!knownIfPropertyChanged && triggeringBinding) {
knownIfPropertyChanged = true;
propertyChanged = triggeringBinding->evaluateIfDirtyAndReturnTrueIfValueChanged(propertyDataPtr);
if (!knownToHaveChanged && triggeringBinding) {
if (!triggeringBinding->evaluateIfDirtyAndReturnTrueIfValueChanged(propertyDataPtr))
return;
knownToHaveChanged = true;
}
if (!propertyChanged)
return;
handlerToCall(observer, propertyDataPtr);
next = protector.next();
break;

View File

@ -104,7 +104,7 @@ struct QPropertyObserverPointer
void setChangeHandler(QPropertyObserver::ChangeHandler changeHandler);
void setAliasedProperty(QUntypedPropertyData *propertyPtr);
void notify(QPropertyBindingPrivate *triggeringBinding, QUntypedPropertyData *propertyDataPtr, const bool alreadyKnownToHaveChanged = false);
void notify(QPropertyBindingPrivate *triggeringBinding, QUntypedPropertyData *propertyDataPtr, bool knownToHaveChanged = false);
void observeProperty(QPropertyBindingDataPointer property);
explicit operator bool() const { return ptr != nullptr; }