13
0

fix basic logic problem in PropertyTemplate<T>::set so that current/old values are properly managed

git-svn-id: svn://localhost/ardour2/branches/3.0@7310 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2010-06-28 14:56:40 +00:00
parent ed19559ece
commit 74745856d6

View File

@ -134,11 +134,24 @@ protected:
{}
void set (T const& v) {
if (!_have_old) {
_old = _current;
_have_old = true;
}
_current = v;
if (v != _current) {
if (!_have_old) {
_old = _current;
_have_old = true;
} else {
if (v == _old) {
/* value has been reset to the value
at the start of a history transaction,
before clear_history() is called.
thus there is effectively no apparent
history for this property.
*/
_have_old = false;
}
}
_current = v;
}
}
virtual std::string to_string (T const& v) const = 0;