summaryrefslogtreecommitdiff
path: root/libs/ardour/session_midi.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-10-20 11:34:14 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-10-20 16:34:52 -0400
commit12c558f62e67974ca84fc517f21397bdfa1f9737 (patch)
tree6d5f4fe3d7aaf492d85f7e7251c3075403e4a26f /libs/ardour/session_midi.cc
parent343136c72813966da2e3e1fb531c3896ea5dec81 (diff)
tweak logic for MIDI input follows selection
Diffstat (limited to 'libs/ardour/session_midi.cc')
-rw-r--r--libs/ardour/session_midi.cc8
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);
}
}