diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2019-03-06 19:46:51 -0700 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2019-03-07 12:01:27 -0700 |
commit | 8b212bfa1294aa0e751690de355b05d4eaa82759 (patch) | |
tree | c4c7c77ef02bb8b8a1ec85619c9444102afc05e6 /libs/ardour/session_midi.cc | |
parent | 66f73f40dbbd9246699b710b03e26b752f5fb8f4 (diff) |
a more nuanced version of the "do-not-automatically-disconnect-selection-follows-input
Diffstat (limited to 'libs/ardour/session_midi.cc')
-rw-r--r-- | libs/ardour/session_midi.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libs/ardour/session_midi.cc b/libs/ardour/session_midi.cc index 4d1653b7f7..18ee55408c 100644 --- a/libs/ardour/session_midi.cc +++ b/libs/ardour/session_midi.cc @@ -756,6 +756,18 @@ Session::rewire_selected_midi (boost::shared_ptr<MidiTrack> new_midi_target) } for (vector<string>::const_iterator p = msp.begin(); p != msp.end(); ++p) { + PortManager::MidiPortInformation mpi (AudioEngine::instance()->midi_port_information (*p)); + + /* if a port is marked for control data, do not + * disconnect it from everything since it may also be + * used via a control surface or some other + * functionality. + */ + + if (!(mpi.properties & MidiPortControl)) { + /* disconnect the port from everything */ + AudioEngine::instance()->disconnect (*p); + } /* connect it to the new target */ new_midi_target->input()->connect (new_midi_target->input()->nth(0), (*p), this); } |