diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2017-01-21 18:20:04 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2017-01-22 19:49:40 +0100 |
commit | 7daf620a8dba0772c51b8034ee917a3a73ea3475 (patch) | |
tree | 063ff3d20540fa0be0e71b7e556b1633bdd00595 /libs/surfaces/generic_midi | |
parent | 50b25571bc8680be22089fa12d9c9676d71e1331 (diff) |
add some comments
Diffstat (limited to 'libs/surfaces/generic_midi')
-rw-r--r-- | libs/surfaces/generic_midi/generic_midi_control_protocol.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc index 10b52027e8..78e6dd789d 100644 --- a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc +++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc @@ -341,6 +341,10 @@ GenericMidiControlProtocol::start_learning (Controllable* c) Glib::Threads::Mutex::Lock lm2 (controllables_lock); DEBUG_TRACE (DEBUG::GenericMidi, string_compose ("Learn binding: Controlable number: %1\n", c)); + /* drop any existing mappings for the same controllable for which + * learning has just started. + */ + MIDIControllables::iterator tmp; for (MIDIControllables::iterator i = controllables.begin(); i != controllables.end(); ) { tmp = i; @@ -352,6 +356,10 @@ GenericMidiControlProtocol::start_learning (Controllable* c) i = tmp; } + /* check pending controllables (those for which a learn is underway) to + * see if it is for the same one for which learning has just started. + */ + { Glib::Threads::Mutex::Lock lm (pending_lock); @@ -386,6 +394,8 @@ GenericMidiControlProtocol::start_learning (Controllable* c) own_mc = true; } + /* stuff the new controllable into pending */ + { Glib::Threads::Mutex::Lock lm (pending_lock); @@ -419,6 +429,10 @@ GenericMidiControlProtocol::learning_stopped (MIDIControllable* mc) i = tmp; } + /* add the controllable for which learning stopped to our list of + * controllables + */ + controllables.push_back (mc); } |