diff options
author | Tim Mayberry <mojofunk@gmail.com> | 2016-02-03 22:23:55 +1000 |
---|---|---|
committer | Tim Mayberry <mojofunk@gmail.com> | 2016-02-03 22:30:41 +1000 |
commit | dd05f1e257f8a715d23625bb725a727c57c4c0b6 (patch) | |
tree | 1b10f0e0be820072aee5b9180a389fe42221edbf /libs/surfaces/generic_midi | |
parent | 07f8c04e2e4113df84d64c6ea7464569431e9820 (diff) |
Fix bug #5633, Don't drop all midi bindings when a track is removed
Only drop the controllable that is being destroyed, not all of them.
Diffstat (limited to 'libs/surfaces/generic_midi')
-rw-r--r-- | libs/surfaces/generic_midi/midicontrollable.cc | 8 | ||||
-rw-r--r-- | libs/surfaces/generic_midi/midicontrollable.h | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/libs/surfaces/generic_midi/midicontrollable.cc b/libs/surfaces/generic_midi/midicontrollable.cc index 3a1aea592f..1051503fc4 100644 --- a/libs/surfaces/generic_midi/midicontrollable.cc +++ b/libs/surfaces/generic_midi/midicontrollable.cc @@ -142,7 +142,7 @@ MIDIControllable::set_controllable (Controllable* c) if (controllable) { controllable->Destroyed.connect (controllable_death_connection, MISSING_INVALIDATOR, - boost::bind (&MIDIControllable::drop_controllable, this), + boost::bind (&MIDIControllable::drop_controllable, this, _1), MidiControlUI::instance()); } } @@ -264,9 +264,11 @@ MIDIControllable::lookup_controllable() } void -MIDIControllable::drop_controllable () +MIDIControllable::drop_controllable (Controllable* c) { - set_controllable (0); + if (c == controllable) { + set_controllable (0); + } } void diff --git a/libs/surfaces/generic_midi/midicontrollable.h b/libs/surfaces/generic_midi/midicontrollable.h index a19e3a1a28..8c14856742 100644 --- a/libs/surfaces/generic_midi/midicontrollable.h +++ b/libs/surfaces/generic_midi/midicontrollable.h @@ -142,7 +142,7 @@ class MIDIControllable : public PBD::Stateful std::string _what; bool _bank_relative; - void drop_controllable(); + void drop_controllable (PBD::Controllable*); void midi_receiver (MIDI::Parser &p, MIDI::byte *, size_t); void midi_sense_note (MIDI::Parser &, MIDI::EventTwoBytes *, bool is_on); |