fix gain automation copy/paste -- #6842
authorRobin Gareus <robin@gareus.org>
Mon, 28 Mar 2016 19:45:44 +0000 (21:45 +0200)
committerRobin Gareus <robin@gareus.org>
Mon, 28 Mar 2016 19:45:44 +0000 (21:45 +0200)
gtk2_ardour/selection.cc

index aa12e4fea858ee60254a8702d1d88c52bc850c85..d5fadb9cbb4f57d09b40b953c67fc742de8e94a4 100644 (file)
@@ -620,10 +620,14 @@ Selection::add (boost::shared_ptr<Evoral::ControlList> cl)
                warning << "Programming error: Selected list is not an ARDOUR::AutomationList" << endmsg;
                return;
        }
-       if (find (lines.begin(), lines.end(), al) == lines.end()) {
-               lines.push_back (al);
-               LinesChanged();
-       }
+
+       /* The original may change so we must store a copy (not a pointer) here.
+        * e.g AutomationLine rewrites the list with gain mapping.
+        * the downside is that we can't perfom duplicate checks.
+        * This code was changed in response to #6842
+        */
+       lines.push_back (boost::shared_ptr<ARDOUR::AutomationList> (new ARDOUR::AutomationList(*al)));
+       LinesChanged();
 }
 
 void