From 74745856d6dbaa2fd7c7e78662cdc4bc3a98422d Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 28 Jun 2010 14:56:40 +0000 Subject: [PATCH] fix basic logic problem in PropertyTemplate::set so that current/old values are properly managed git-svn-id: svn://localhost/ardour2/branches/3.0@7310 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/pbd/pbd/properties.h | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/libs/pbd/pbd/properties.h b/libs/pbd/pbd/properties.h index 03e42aa451..1e17ddafb0 100644 --- a/libs/pbd/pbd/properties.h +++ b/libs/pbd/pbd/properties.h @@ -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; -- 2.30.2