X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=midi_mapper.cpp;fp=midi_mapper.cpp;h=27e843ee33e7b2f2cfb02a3a6ed68656e8884d53;hb=afe996bc7dfc8689ca356d00824fbfcd632f93a2;hp=dc5eab0342477668049263a44d50b579962a8267;hpb=6379b0adf2cee84b46d5a0d8e2ee5e6a7d1615cf;p=nageru diff --git a/midi_mapper.cpp b/midi_mapper.cpp index dc5eab0..27e843e 100644 --- a/midi_mapper.cpp +++ b/midi_mapper.cpp @@ -66,6 +66,7 @@ bool load_midi_mapping_from_file(const string &filename, MIDIMappingProto *new_m void MIDIMapper::set_midi_mapping(const MIDIMappingProto &new_mapping) { + lock_guard lock(mapping_mu); if (mapping_proto) { mapping_proto->CopyFrom(new_mapping); } else { @@ -81,6 +82,12 @@ void MIDIMapper::start_thread() midi_thread = thread(&MIDIMapper::thread_func, this); } +const MIDIMappingProto &MIDIMapper::get_current_mapping() const +{ + lock_guard lock(mapping_mu); + return *mapping_proto; +} + #define RETURN_ON_ERROR(msg, expr) do { \ int err = (expr); \ if (err < 0) { \ @@ -171,6 +178,7 @@ void MIDIMapper::thread_func() void MIDIMapper::handle_event(snd_seq_t *seq, snd_seq_event_t *event) { + lock_guard lock(mapping_mu); switch (event->type) { case SND_SEQ_EVENT_CONTROLLER: { printf("Controller %d changed to %d\n", event->data.control.param, event->data.control.value);