From 6fb212a6f64e88a8096d90512d93b18dd6745dea Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 4 Jul 2017 12:14:33 -0400 Subject: restart non-RT locate if a new request has been processed by RT context since we started --- libs/ardour/session_transport.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'libs/ardour/session_transport.cc') 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 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 (); -- cgit v1.2.3