summaryrefslogtreecommitdiff
path: root/libs/ardour/insert.cc
diff options
context:
space:
mode:
authorBen Loftis <ben@glw.com>2010-04-22 15:54:12 +0000
committerBen Loftis <ben@glw.com>2010-04-22 15:54:12 +0000
commit2df90582860824831a9fc79e69c0750f2c84a5b2 (patch)
treee43498631364d370e43e22cacbe0810d923a7473 /libs/ardour/insert.cc
parent9ed1768212d03a6c6931cbcaa8f302ce0cb2f4f1 (diff)
more realtime automation fixes: only do realtime automation while rolling, and never Read on a locate when you are in Write
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@6965 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/insert.cc')
-rw-r--r--libs/ardour/insert.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/libs/ardour/insert.cc b/libs/ardour/insert.cc
index 035d344ab6..1dd6cff83d 100644
--- a/libs/ardour/insert.cc
+++ b/libs/ardour/insert.cc
@@ -340,7 +340,7 @@ PluginInsert::automation_snapshot (nframes_t now, bool force)
AutomationList *alist = *li;
- if (alist && alist->automation_write ()) {
+ if (alist && alist->automation_write () && _session.transport_rolling()) {
float val = _plugins[0]->get_parameter (n);
alist->rt_add (now, val);
@@ -361,7 +361,7 @@ PluginInsert::transport_stopped (nframes_t now)
if (alist) {
alist->reposition_for_rt_add (now);
- if (alist->automation_state() != Auto_Off) {
+ if (alist->automation_state() == Auto_Touch || alist->automation_state() == Auto_Play) {
_plugins[0]->set_parameter (n, alist->eval (now));
}
}
@@ -423,7 +423,7 @@ PluginInsert::set_parameter (uint32_t port, float val)
_plugins[0]->set_parameter (port, val);
- if (automation_list (port).automation_write()) {
+ if (automation_list (port).automation_write() && _session.transport_rolling()) {
if ( desc.toggled ) //store the previous value just before this so any interpolation works right
automation_list (port).add (_session.audible_frame()-1, last_val);
automation_list (port).add (_session.audible_frame(), val);