diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2006-11-07 05:16:01 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2006-11-07 05:16:01 +0000 |
commit | 5b6524bed4fb57a4a2061c5aa3471e2172fc20ea (patch) | |
tree | 877724d27d4b4008edcc27e5a93ad0422b6656c0 | |
parent | f5f141bb184b4088dd8ae9434893b00f35d1c342 (diff) |
fix for mantis 802 - work if there are no physical output or input ports in JACK
git-svn-id: svn://localhost/ardour2/trunk@1088 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | libs/ardour/session.cc | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 987a8377ef..b2705c2cbd 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -328,8 +328,16 @@ Session::Session (AudioEngine &eng, cerr << "Loading session " << fullpath << " using snapshot " << snapshot_name << " (2)" << endl; - n_physical_outputs = max (requested_physical_out, _engine.n_physical_outputs()); - n_physical_inputs = max (requested_physical_in, _engine.n_physical_inputs()); + n_physical_outputs = _engine.n_physical_outputs(); + n_physical_inputs = _engine.n_physical_inputs(); + + if (n_physical_inputs) { + n_physical_inputs = max (requested_physical_in, n_physical_inputs); + } + + if (n_physical_outputs) { + n_physical_outputs = max (requested_physical_out, n_physical_outputs); + } first_stage_init (fullpath, snapshot_name); @@ -1771,12 +1779,12 @@ Session::new_audio_route (int input_channels, int output_channels, uint32_t how_ << endmsg; } - for (uint32_t x = 0; x < bus->n_inputs(); ++x) { + for (uint32_t x = 0; n_physical_inputs && x < bus->n_inputs(); ++x) { port = ""; - + if (Config->get_input_auto_connect() & AutoConnectPhysical) { - port = physinputs[((n+x)%n_physical_inputs)]; + port = physinputs[((n+x)%n_physical_inputs)]; } if (port.length() && bus->connect_input (bus->input (x), port, this)) { @@ -1784,7 +1792,7 @@ Session::new_audio_route (int input_channels, int output_channels, uint32_t how_ } } - for (uint32_t x = 0; x < bus->n_outputs(); ++x) { + for (uint32_t x = 0; n_physical_outputs && x < bus->n_outputs(); ++x) { port = ""; |