update disk writer input latency at transport stop
This commit is contained in:
parent
79abf3dfa6
commit
c6bd033523
@ -83,7 +83,7 @@ class LIBARDOUR_API Track : public Route, public Recordable
|
||||
bool can_record();
|
||||
|
||||
void set_latency_compensation (framecnt_t);
|
||||
|
||||
void update_latency_information ();
|
||||
enum FreezeState {
|
||||
NoFreeze,
|
||||
Frozen,
|
||||
@ -146,7 +146,6 @@ class LIBARDOUR_API Track : public Route, public Recordable
|
||||
void ensure_input_monitoring (bool);
|
||||
bool destructive () const;
|
||||
std::list<boost::shared_ptr<Source> > & last_capture_sources ();
|
||||
void set_capture_offset ();
|
||||
std::string steal_write_source_name ();
|
||||
void reset_write_sources (bool, bool force = false);
|
||||
float playback_buffer_load () const;
|
||||
|
@ -5737,7 +5737,7 @@ Session::graph_reordered ()
|
||||
for (RouteList::iterator i = rl->begin(); i != rl->end(); ++i) {
|
||||
boost::shared_ptr<Track> tr = boost::dynamic_pointer_cast<Track> (*i);
|
||||
if (tr) {
|
||||
tr->set_capture_offset ();
|
||||
tr->update_latency_information ();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6936,7 +6936,7 @@ Session::post_capture_latency ()
|
||||
for (RouteList::iterator i = rl->begin(); i != rl->end(); ++i) {
|
||||
boost::shared_ptr<Track> tr = boost::dynamic_pointer_cast<Track> (*i);
|
||||
if (tr) {
|
||||
tr->set_capture_offset ();
|
||||
tr->update_latency_information ();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -7045,7 +7045,7 @@ Session::update_latency_compensation (bool force_whole_graph)
|
||||
if (!tr) {
|
||||
continue;
|
||||
}
|
||||
tr->set_capture_offset ();
|
||||
tr->update_latency_information ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -7378,8 +7378,8 @@ Session::auto_connect_thread_run ()
|
||||
/* this is only used for updating plugin latencies, the
|
||||
* graph does not change. so it's safe in general.
|
||||
* BUT..
|
||||
* .. update_latency_compensation () entails set_capture_offset()
|
||||
* which calls Diskstream::set_capture_offset () which
|
||||
* .. update_latency_compensation () entails Track::update_latency_information()
|
||||
* which calls DiskWriter::set_capture_offset () which
|
||||
* modifies the capture offset... which can be a proplem
|
||||
* in "prepare_to_stop"
|
||||
*/
|
||||
|
@ -627,9 +627,15 @@ Track::last_capture_sources ()
|
||||
}
|
||||
|
||||
void
|
||||
Track::set_capture_offset ()
|
||||
Track::update_latency_information ()
|
||||
{
|
||||
_disk_writer->set_capture_offset ();
|
||||
Glib::Threads::RWLock::ReaderLock lr (_processor_lock);
|
||||
framecnt_t chain_latency = _input->latency ();
|
||||
|
||||
for (ProcessorList::iterator p = _processors.begin(); p != _processors.end(); ++p) {
|
||||
(*p)->set_input_latency (chain_latency);
|
||||
chain_latency += (*p)->signal_latency ();
|
||||
}
|
||||
}
|
||||
|
||||
std::string
|
||||
|
Loading…
Reference in New Issue
Block a user