diff options
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); } |