]> git.sesse.net Git - nageru/blobdiff - midi_mapper.cpp
Add an editor for the MIDI mappings.
[nageru] / midi_mapper.cpp
index dc5eab0342477668049263a44d50b579962a8267..27e843ee33e7b2f2cfb02a3a6ed68656e8884d53 100644 (file)
@@ -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<mutex> 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<mutex> 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<mutex> 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);