mechanism to allow Track (or other Route-derived type) to add its own processors at the right time
This commit is contained in:
parent
e5ea6d81d8
commit
4bfc5ddf71
@ -741,6 +741,7 @@ private:
|
||||
|
||||
void setup_invisible_processors ();
|
||||
virtual void setup_invisible_processors_oh_children_of_mine (ProcessorList&) {}
|
||||
virtual void add_processors_oh_children_of_mine () {}
|
||||
|
||||
void unpan ();
|
||||
|
||||
|
@ -256,6 +256,7 @@ class LIBARDOUR_API Track : public Route, public Recordable
|
||||
private:
|
||||
void parameter_changed (std::string const & p);
|
||||
void setup_invisible_processors_oh_children_of_mine (ProcessorList&);
|
||||
void add_processors_oh_children_of_mine ();
|
||||
|
||||
std::string _diskstream_name;
|
||||
};
|
||||
|
@ -239,6 +239,10 @@ Route::init ()
|
||||
_monitor_control->activate ();
|
||||
}
|
||||
|
||||
/* give derived classes a chance to add processors before we configure */
|
||||
|
||||
add_processors_oh_children_of_mine ();
|
||||
|
||||
/* now that we have _meter, its safe to connect to this */
|
||||
|
||||
{
|
||||
|
@ -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()));
|
||||
@ -130,6 +114,28 @@ Track::init ()
|
||||
return 0;
|
||||
}
|
||||
|
||||
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 ()
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user