[ardour-dev] patch for plugin automation
gerard van dongen
gml at xs4all.nl
Thu Jul 8 09:57:26 PDT 2004
The diff also includes the fix I sent previously for marking the line
dirty after editing it.
diff -u -r1.30 automation_event.cc
--- libs/ardour/automation_event.cc 19 Jun 2004 13:36:10 -0000
1.30
+++ libs/ardour/automation_event.cc 8 Jul 2004 15:42:15 -0000
@@ -146,6 +146,7 @@
void
AutomationList::maybe_signal_changed ()
{
+
if (_frozen) {
changed_when_thawed = true;
} else {
@@ -391,7 +392,10 @@
save_state (_("removed event"));
}
}
+
+ mark_dirty();
maybe_signal_changed ();
+
}
void
@@ -405,6 +409,7 @@
save_state (_("removed multiple events"));
}
}
+ mark_dirty();
maybe_signal_changed ();
}
@@ -433,6 +438,7 @@
}
if (erased) {
+ mark_dirty();
maybe_signal_changed ();
}
}
@@ -445,12 +451,16 @@
points after end are later than (end)->when.
*/
+
{
+
LockMonitor lm (lock, __LINE__, __FILE__);
while (start != end) {
+
(*start)->when += xdelta;
(*start)->value += ydelta;
+
++start;
}
@@ -458,7 +468,7 @@
save_state (_("event range adjusted"));
}
}
-
+ mark_dirty();
maybe_signal_changed ();
}
@@ -478,7 +488,7 @@
save_state (_("event adjusted"));
}
}
-
+ mark_dirty();
maybe_signal_changed ();
}
@@ -527,7 +537,8 @@
{
_frozen = false;
if (changed_when_thawed) {
- StateChanged(Change(0)); /* EMIT SIGNAL */
+
+ StateChanged(Change(0)); /* EMIT SIGNAL */
}
}
@@ -711,10 +722,14 @@
double uval, lval;
double fraction;
+
+
if (events.empty()) {
return default_value;
}
+
+
/* XXX OPTIMIZE ME by caching the range iterators */
range = equal_range (events.begin(), events.end(), &cp, cmp);
@@ -728,12 +743,13 @@
lpos = (*range.first)->when;
lval = (*range.first)->value;
} else {
- lpos = 0;
- lval = default_value;
+ //we're before the first point
+ return lval = default_value;
}
if (range.second == events.end()) {
- return default_value;
+ //we're after the last point
+ return events.back()->value;
}
upos = (*range.second)->when;
@@ -771,6 +787,7 @@
}
}
+ mark_dirty();
maybe_signal_changed ();
return nal;
@@ -834,6 +851,7 @@
}
}
+ mark_dirty();
maybe_signal_changed ();
return nal;
@@ -936,6 +954,7 @@
}
}
+ mark_dirty();
maybe_signal_changed ();
return true;
}
More information about the Ardour-Dev
mailing list