From c4578db595771b5db9572b23cfe3f9a7ebef66c3 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 4 Jul 2017 20:12:51 +0200 Subject: [PATCH] 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. --- libs/ardour/automation_list.cc | 2 ++ libs/evoral/src/ControlList.cpp | 3 +++ 2 files changed, 5 insertions(+) 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