From: Robin Gareus Date: Tue, 4 Jul 2017 18:12:51 +0000 (+0200) Subject: Compatibility with old out-of-range automation-lane data X-Git-Tag: 5.11~333 X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;h=c4578db595771b5db9572b23cfe3f9a7ebef66c3;p=ardour.git Compatibility with old out-of-range automation-lane data Ardour may have ignored log-scale for parameters 0..N and allowed writing '0'. Force those values into the valid range on session load. Also mark the list as "needs sorting" which removes potential duplicates. --- diff --git a/libs/ardour/automation_list.cc b/libs/ardour/automation_list.cc index 014b4c511b..8ceab4f3ea 100644 --- a/libs/ardour/automation_list.cc +++ b/libs/ardour/automation_list.cc @@ -444,6 +444,7 @@ AutomationList::deserialize_events (const XMLNode& node) ok = false; break; } + y = std::min ((double)_desc.upper, std::max ((double)_desc.lower, y)); fast_simple_add (x, y); } @@ -501,6 +502,7 @@ AutomationList::set_state (const XMLNode& node, int version) continue; } + y = std::min ((double)_desc.upper, std::max ((double)_desc.lower, y)); fast_simple_add (x, y); } diff --git a/libs/evoral/src/ControlList.cpp b/libs/evoral/src/ControlList.cpp index 8bb1c125d2..a05c1f9308 100644 --- a/libs/evoral/src/ControlList.cpp +++ b/libs/evoral/src/ControlList.cpp @@ -412,6 +412,9 @@ ControlList::fast_simple_add (double when, double value) _events.insert (_events.end(), new ControlEvent (when, value)); mark_dirty (); + if (_frozen) { + _sort_pending = true; + } } void