PBD::Signal0<void> session_routes_reconnected;
/* monitor/master out */
+ int add_master_bus (ChanCount const&);
void add_monitor_section ();
void reset_monitor_section ();
.addFunction ("new_audio_route", &Session::new_audio_route)
.addFunction ("new_midi_track", &Session::new_midi_track)
.addFunction ("new_midi_route", &Session::new_midi_route)
+
+ .addFunction ("add_master_bus", &Session::add_master_bus)
+ .addFunction ("add_monitor_section", &Session::add_monitor_section)
+ .addFunction ("remove_monitor_section", &Session::remove_monitor_section)
+
.addFunction ("get_routes", &Session::get_routes)
.addFunction ("get_tracks", &Session::get_tracks)
.addFunction ("get_stripables", (StripableList (Session::*)() const)&Session::get_stripables)
}
}
+int
+Session::add_master_bus (ChanCount const& count)
+{
+ if (master_out ()) {
+ return -1;
+ }
+
+ RouteList rl;
+
+ boost::shared_ptr<Route> r (new Route (*this, _("Master"), PresentationInfo::MasterOut, DataType::AUDIO));
+ if (r->init ()) {
+ return -1;
+ }
+
+ BOOST_MARK_ROUTE(r);
+
+ {
+ Glib::Threads::Mutex::Lock lm (AudioEngine::instance()->process_lock ());
+ r->input()->ensure_io (count, false, this);
+ r->output()->ensure_io (count, false, this);
+ }
+
+ rl.push_back (r);
+ add_routes (rl, false, false, false, PresentationInfo::max_order);
+ return 0;
+}
+
void
Session::hookup_io ()
{
if (bus_profile) {
RouteList rl;
ChanCount count(DataType::AUDIO, bus_profile->master_out_channels);
+ if (bus_profile->master_out_channels) {
+ int rv = add_master_bus (count);
- // Waves Tracks: always create master bus for Tracks
- if (ARDOUR::Profile->get_trx() || bus_profile->master_out_channels) {
- boost::shared_ptr<Route> r (new Route (*this, _("Master"), PresentationInfo::MasterOut, DataType::AUDIO));
- if (r->init ()) {
- return -1;
+ if (rv) {
+ return rv;
}
- BOOST_MARK_ROUTE(r);
-
- {
- Glib::Threads::Mutex::Lock lm (AudioEngine::instance()->process_lock ());
- r->input()->ensure_io (count, false, this);
- r->output()->ensure_io (count, false, this);
- }
-
- rl.push_back (r);
-
+ if (Config->get_use_monitor_bus())
+ add_monitor_section ();
}
-
- if (!rl.empty()) {
- add_routes (rl, false, false, false, PresentationInfo::max_order);
- }
- }
-
- if (Config->get_use_monitor_bus() && bus_profile) {
- add_monitor_section ();
}
return 0;