diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2017-07-21 17:03:04 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2017-09-18 11:40:53 -0400 |
commit | 4bfc5ddf71728c1f14a3fbff5dab4986fbabe15c (patch) | |
tree | 2b8edd7a1866a25759e3d1dc7048c90cbb3c246f /libs/ardour/track.cc | |
parent | e5ea6d81d8fda4cec717c2f285f499d05b30182a (diff) |
mechanism to allow Track (or other Route-derived type) to add its own processors at the right time
Diffstat (limited to 'libs/ardour/track.cc')
-rw-r--r-- | libs/ardour/track.cc | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index 72948b4a98..6439f8c0aa 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -85,26 +85,10 @@ Track::init () return -1; } - DiskIOProcessor::Flag dflags = DiskIOProcessor::Recordable; - - if (_mode == Destructive && !Profile->get_trx()) { - dflags = DiskIOProcessor::Flag (dflags | DiskIOProcessor::Destructive); - } else if (_mode == NonLayered){ - dflags = DiskIOProcessor::Flag(dflags | DiskIOProcessor::NonLayered); - } - - _disk_reader.reset (new DiskReader (_session, name(), dflags)); - _disk_reader->set_block_size (_session.get_block_size ()); - _disk_reader->set_route (boost::dynamic_pointer_cast<Route> (shared_from_this())); - - _disk_writer.reset (new DiskWriter (_session, name(), dflags)); - _disk_writer->set_block_size (_session.get_block_size ()); - _disk_writer->set_route (boost::dynamic_pointer_cast<Route> (shared_from_this())); - use_new_playlist (); /* disk writer and reader processors will be added when Route calls - * setup_invisible_processors_oh_children_of_mine (). + * add_processors_oh_children_of_mine (). */ boost::shared_ptr<Route> rp (boost::dynamic_pointer_cast<Route> (shared_from_this())); @@ -131,6 +115,28 @@ Track::init () } void +Track::add_processors_oh_children_of_mine () +{ + cerr << name() << " ::apocom(), create DW + DR\n"; + + DiskIOProcessor::Flag dflags = DiskIOProcessor::Recordable; + + if (_mode == Destructive && !Profile->get_trx()) { + dflags = DiskIOProcessor::Flag (dflags | DiskIOProcessor::Destructive); + } else if (_mode == NonLayered){ + dflags = DiskIOProcessor::Flag(dflags | DiskIOProcessor::NonLayered); + } + + _disk_reader.reset (new DiskReader (_session, name(), dflags)); + _disk_reader->set_block_size (_session.get_block_size ()); + _disk_reader->set_route (boost::dynamic_pointer_cast<Route> (shared_from_this())); + + _disk_writer.reset (new DiskWriter (_session, name(), dflags)); + _disk_writer->set_block_size (_session.get_block_size ()); + _disk_writer->set_route (boost::dynamic_pointer_cast<Route> (shared_from_this())); +} + +void Track::input_changed () { if (_disk_writer && _alignment_choice == Automatic) { |