diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2015-05-08 15:03:06 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-06-29 14:18:10 -0400 |
commit | 511f609a148f7aceadedb7ee7d982d7dc4e1e592 (patch) | |
tree | 98b37026182ff92a171e3bee62509de13cd4849b /libs/ardour | |
parent | 2f95da983b3f1a36065dbeec25871fad7a4f6410 (diff) |
add Session::reconnect_midi_scene_ports()
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/session.h | 2 | ||||
-rw-r--r-- | libs/ardour/session.cc | 34 |
2 files changed, 36 insertions, 0 deletions
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 2a90230c73..b48b326a60 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -980,6 +980,8 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop MIDI::MachineControl& mmc() { return *_mmc; } + void reconnect_midi_scene_ports (bool); + protected: friend class AudioEngine; void set_block_size (pframes_t nframes); diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 94153de1cf..f6d04b1be9 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -2375,6 +2375,40 @@ Session::reconnect_existing_routes (bool withLock, bool reconnect_master, bool r */ } +void +Session::reconnect_midi_scene_ports(bool inputs) +{ + if (inputs) { + scene_in()->disconnect_all (); + + std::vector<EngineStateController::MidiPortState> midi_port_states; + EngineStateController::instance()->get_physical_midi_input_states (midi_port_states); + + std::vector<EngineStateController::MidiPortState>::iterator state_iter = midi_port_states.begin(); + + for (; state_iter != midi_port_states.end(); ++state_iter) { + if (state_iter->active && state_iter->available && state_iter->connected) { + scene_in()->connect (state_iter->name); + } + } + + } else { + scene_out()->disconnect_all (); + + std::vector<EngineStateController::MidiPortState> midi_port_states; + EngineStateController::instance()->get_physical_midi_output_states (midi_port_states); + + std::vector<EngineStateController::MidiPortState>::iterator state_iter = midi_port_states.begin(); + + for (; state_iter != midi_port_states.end(); ++state_iter) { + if (state_iter->active && state_iter->available && state_iter->connected) { + scene_out()->connect (state_iter->name); + } + } + + } +} + /** Caller must not hold process lock * @param name_template string to use for the start of the name, or "" to use "Audio". |