summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/route.h1
-rw-r--r--libs/ardour/ardour/track.h1
-rw-r--r--libs/ardour/route.cc4
-rw-r--r--libs/ardour/track.cc40
4 files changed, 29 insertions, 17 deletions
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h
index c3d46f6175..2590be291b 100644
--- a/libs/ardour/ardour/route.h
+++ b/libs/ardour/ardour/route.h
@@ -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 ();
diff --git a/libs/ardour/ardour/track.h b/libs/ardour/ardour/track.h
index d14ccdc938..9b9b1c79ee 100644
--- a/libs/ardour/ardour/track.h
+++ b/libs/ardour/ardour/track.h
@@ -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;
};
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index d405dd8f08..c1725c4258 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -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 */
{
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) {