diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2017-07-04 12:14:33 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2017-09-18 11:40:53 -0400 |
commit | 6fb212a6f64e88a8096d90512d93b18dd6745dea (patch) | |
tree | f3c9ffa982a59005e6b1cb01de9e520ed5f1c6aa /libs/ardour/session_transport.cc | |
parent | 58ea3d3d8c2d9802c52605a1baadb8fb4cce65f8 (diff) |
restart non-RT locate if a new request has been processed by RT context since we started
Diffstat (limited to 'libs/ardour/session_transport.cc')
-rw-r--r-- | libs/ardour/session_transport.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index b9e8714d17..4a81e0e798 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -584,9 +584,24 @@ Session::non_realtime_locate () { boost::shared_ptr<RouteList> rl = routes.reader(); + + restart: + const framepos_t tf = _transport_frame; + + cerr << "\n\n >>> START Non-RT locate on routes to " << tf << "\n\n"; + for (RouteList::iterator i = rl->begin(); i != rl->end(); ++i) { (*i)->non_realtime_locate (_transport_frame); + if (tf != _transport_frame) { + /* new locate request arrived while processing + this one. start over. + */ + cerr << "\n\n\n\n RESTART LOCATE @ " << _transport_frame << endl; + goto restart; + } } + + cerr << "\n\n <<< DONE Non-RT locate on routes\n\n"; } { VCAList v = _vca_manager->vcas (); |