diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-09-28 21:09:58 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-09-28 21:09:58 +0000 |
commit | edbe4a330768c76031eaa82ed9d9aba335d00c3e (patch) | |
tree | f83260449531e6e7fec8890b828ed17f94c6b9e3 /libs | |
parent | 43b17b5df1927a6c08a382c420c49d7ac1014852 (diff) |
prepare_input/cycle_start fix up round 2 (torben's location); torben's fix for autoconnect
git-svn-id: svn://localhost/ardour2/branches/3.0@3822 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/io.cc | 1 | ||||
-rw-r--r-- | libs/ardour/session.cc | 45 | ||||
-rw-r--r-- | libs/ardour/session_process.cc | 4 |
3 files changed, 11 insertions, 39 deletions
diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc index c51920cd0d..40bf86b5d9 100644 --- a/libs/ardour/io.cc +++ b/libs/ardour/io.cc @@ -324,6 +324,7 @@ IO::collect_input (BufferSet& outs, nframes_t nframes, nframes_t offset) BufferSet::iterator o = outs.begin(*t); for (PortSet::iterator i = _inputs.begin(*t); i != _inputs.end(*t); ++i, ++o) { + (*i)->prepare_inputs (nframes, offset); o->read_from(i->get_buffer(), nframes, offset); } diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 7698fc3dbc..a9f37b6d31 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -1527,16 +1527,13 @@ Session::new_midi_track (TrackMode mode, uint32_t how_many) } } -#if 0 vector<string> physinputs; vector<string> physoutputs; _engine.get_physical_outputs (DataType::MIDI, physoutputs); _engine.get_physical_inputs (DataType::MIDI, physinputs); - uint32_t nphysical_in; - uint32_t nphysical_out; + control_id = ntracks() + nbusses(); -#endif while (how_many) { @@ -1558,20 +1555,6 @@ Session::new_midi_track (TrackMode mode, uint32_t how_many) } while (track_id < (UINT_MAX-1)); - /* - if (Config->get_input_auto_connect() & AutoConnectPhysical) { - nphysical_in = min (n_physical_inputs, (uint32_t) physinputs.size()); - } else { - nphysical_in = 0; - } - - if (Config->get_output_auto_connect() & AutoConnectPhysical) { - nphysical_out = min (n_physical_outputs, (uint32_t) physinputs.size()); - } else { - nphysical_out = 0; - } - */ - shared_ptr<MidiTrack> track; try { @@ -1704,8 +1687,6 @@ Session::new_audio_track (int input_channels, int output_channels, TrackMode mod vector<string> physinputs; vector<string> physoutputs; - uint32_t nphysical_in; - uint32_t nphysical_out; _engine.get_physical_outputs (DataType::AUDIO, physoutputs); _engine.get_physical_inputs (DataType::AUDIO, physinputs); @@ -1731,18 +1712,6 @@ Session::new_audio_track (int input_channels, int output_channels, TrackMode mod } while (track_id < (UINT_MAX-1)); - if (Config->get_input_auto_connect() & AutoConnectPhysical) { - nphysical_in = min (n_physical_inputs, (uint32_t) physinputs.size()); - } else { - nphysical_in = 0; - } - - if (Config->get_output_auto_connect() & AutoConnectPhysical) { - nphysical_out = min (n_physical_outputs, (uint32_t) physinputs.size()); - } else { - nphysical_out = 0; - } - shared_ptr<AudioTrack> track; try { @@ -1770,7 +1739,7 @@ Session::new_audio_track (int input_channels, int output_channels, TrackMode mod } } - for (uint32_t x = 0; x < track->n_outputs().n_midi(); ++x) { + for (uint32_t x = 0; x < track->n_outputs().n_audio(); ++x) { port = ""; @@ -1872,6 +1841,7 @@ Session::new_audio_route (int input_channels, int output_channels, uint32_t how_ char bus_name[32]; uint32_t bus_id = 1; uint32_t n = 0; + uint32_t channels_used = 0; string port; RouteList ret; uint32_t control_id; @@ -1882,9 +1852,12 @@ Session::new_audio_route (int input_channels, int output_channels, uint32_t how_ shared_ptr<RouteList> r = routes.reader (); for (RouteList::iterator i = r->begin(); i != r->end(); ++i) { - if (dynamic_cast<AudioTrack*>((*i).get()) == 0) { + if (boost::dynamic_pointer_cast<Track*>(*i) == 0) { + /* its a bus ? */ if (!(*i)->is_hidden() && (*i)->name() != _("master")) { bus_id++; + n++; + channels_used += (*i)->n_inputs().n_audio(); } } } @@ -1933,7 +1906,7 @@ Session::new_audio_route (int input_channels, int output_channels, uint32_t how_ } } - for (uint32_t x = 0; n_physical_outputs && x < bus->n_outputs().n_audio(); ++x) { + for (uint32_t x = 0; x < bus->n_outputs().n_audio(); ++x) { port = ""; @@ -1950,6 +1923,8 @@ Session::new_audio_route (int input_channels, int output_channels, uint32_t how_ } } + channels_used += bus->n_inputs ().n_audio(); + bus->set_remote_control_id (control_id); ++control_id; diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index e4025ca6de..abe802548a 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -103,8 +103,6 @@ Session::no_roll (nframes_t nframes, nframes_t offset) for (RouteList::iterator i = r->begin(); i != r->end(); ++i) { - (*i)->prepare_inputs (nframes, offset); - if ((*i)->is_hidden()) { continue; } @@ -144,8 +142,6 @@ Session::process_routes (nframes_t nframes, nframes_t offset) int ret; - (*i)->prepare_inputs (nframes, offset); - if ((*i)->is_hidden()) { continue; } |