bool can_record();
void set_latency_compensation (framecnt_t);
-
+ void update_latency_information ();
enum FreezeState {
NoFreeze,
Frozen,
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;
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 ();
}
}
}
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 ();
}
}
}
if (!tr) {
continue;
}
- tr->set_capture_offset ();
+ tr->update_latency_information ();
}
}
/* 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"
*/
}
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