summaryrefslogtreecommitdiff
path: root/libs/ardour/session_transport.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-07-21 23:07:51 +0200
committerRobin Gareus <robin@gareus.org>2017-07-21 23:07:51 +0200
commit038c391d55ba3f78080c86ab09c3ad909f1b427b (patch)
treeca1201e27d63dbb19fd3856a2181e7ded1cf93a1 /libs/ardour/session_transport.cc
parentce48dfdeba3e20f18d63b52f49547d930ffc0ec0 (diff)
More non-rt calls to VCA - fixes VCA automation writing
This calls for a unified API to invoke Automatable methods ::transport_located() and ::transport_stopped() on Stripables, rather than indirectly calling it via Route::non_realtime_locate(), Route::nonrealtime_handle_transport_stopped()
Diffstat (limited to 'libs/ardour/session_transport.cc')
-rw-r--r--libs/ardour/session_transport.cc22
1 files changed, 21 insertions, 1 deletions
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc
index faf6458b16..4ee2945579 100644
--- a/libs/ardour/session_transport.cc
+++ b/libs/ardour/session_transport.cc
@@ -454,7 +454,10 @@ Session::butler_transport_work ()
}
(*i)->non_realtime_locate (_transport_frame);
}
-
+ VCAList v = _vca_manager->vcas ();
+ for (VCAList::const_iterator i = v.begin(); i != v.end(); ++i) {
+ (*i)->transport_located (_transport_frame);
+ }
}
if (ptw & PostTransportAdjustCaptureBuffering) {
@@ -503,6 +506,10 @@ Session::butler_transport_work ()
goto restart;
}
}
+ VCAList v = _vca_manager->vcas ();
+ for (VCAList::const_iterator i = v.begin(); i != v.end(); ++i) {
+ (*i)->transport_located (_transport_frame);
+ }
}
}
@@ -608,6 +615,12 @@ Session::non_realtime_locate ()
(*i)->non_realtime_locate (_transport_frame);
}
}
+ {
+ VCAList v = _vca_manager->vcas ();
+ for (VCAList::const_iterator i = v.begin(); i != v.end(); ++i) {
+ (*i)->transport_located (_transport_frame);
+ }
+ }
_scene_changer->locate (_transport_frame);
@@ -888,6 +901,13 @@ Session::non_realtime_stop (bool abort, int on_entry, bool& finished)
}
}
+ {
+ VCAList v = _vca_manager->vcas ();
+ for (VCAList::const_iterator i = v.begin(); i != v.end(); ++i) {
+ (*i)->transport_located (_transport_frame);
+ }
+ }
+
have_looped = false;
/* don't bother with this stuff if we're disconnected from the engine,