diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-10-20 11:34:14 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-10-20 16:34:52 -0400 |
commit | 12c558f62e67974ca84fc517f21397bdfa1f9737 (patch) | |
tree | 6d5f4fe3d7aaf492d85f7e7251c3075403e4a26f /libs/ardour/session_midi.cc | |
parent | 343136c72813966da2e3e1fb531c3896ea5dec81 (diff) |
tweak logic for MIDI input follows selection
Diffstat (limited to 'libs/ardour/session_midi.cc')
-rw-r--r-- | libs/ardour/session_midi.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/libs/ardour/session_midi.cc b/libs/ardour/session_midi.cc index a0c1b8c7d4..eb2dce2767 100644 --- a/libs/ardour/session_midi.cc +++ b/libs/ardour/session_midi.cc @@ -759,13 +759,15 @@ Session::rewire_selected_midi (boost::shared_ptr<MidiTrack> new_midi_target) AudioEngine::instance()->get_midi_selection_ports (msp); if (!msp.empty()) { + if (old_midi_target) { - for (PortManager::MidiSelectionPorts::const_iterator p = msp.begin(); p != msp.end(); ++p) { - AudioEngine::instance()->disconnect (*p); - } + old_midi_target->input()->disconnect (this); } for (PortManager::MidiSelectionPorts::const_iterator p = msp.begin(); p != msp.end(); ++p) { + /* 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); } } |