]> git.sesse.net Git - nageru/commitdiff
Fix some UI work being done on the non-UI thread.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sat, 22 Oct 2016 13:45:58 +0000 (15:45 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Tue, 25 Oct 2016 16:48:36 +0000 (18:48 +0200)
midi_mapping_dialog.cpp

index 02ce308daed8cb814f481a2389485f4fa5a041cd..4a4ecfbfee7c2218910412df584c0f7fc5cc0af7 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "midi_mapper.h"
 #include "midi_mapping.pb.h"
+#include "post_to_main_thread.h"
 #include "ui_midi_mapping.h"
 
 class QObject;
@@ -445,28 +446,32 @@ void MIDIMappingDialog::fill_controls_from_mapping(const MIDIMappingProto &mappi
 
 void MIDIMappingDialog::controller_changed(unsigned controller)
 {
-       for (const InstantiatedSpinner &is : controller_spinners) {
-               if (is.spinner->hasFocus()) {
-                       is.spinner->setValue(controller);
-                       is.spinner->selectAll();
+       post_to_main_thread([=]{
+               for (const InstantiatedSpinner &is : controller_spinners) {
+                       if (is.spinner->hasFocus()) {
+                               is.spinner->setValue(controller);
+                               is.spinner->selectAll();
+                       }
                }
-       }
+       });
 }
 
 void MIDIMappingDialog::note_on(unsigned note)
 {
-       for (const InstantiatedSpinner &is : button_spinners) {
-               if (is.spinner->hasFocus()) {
-                       is.spinner->setValue(note);
-                       is.spinner->selectAll();
+       post_to_main_thread([=]{
+               for (const InstantiatedSpinner &is : button_spinners) {
+                       if (is.spinner->hasFocus()) {
+                               is.spinner->setValue(note);
+                               is.spinner->selectAll();
+                       }
                }
-       }
-       for (const InstantiatedSpinner &is : light_spinners) {
-               if (is.spinner->hasFocus()) {
-                       is.spinner->setValue(note);
-                       is.spinner->selectAll();
+               for (const InstantiatedSpinner &is : light_spinners) {
+                       if (is.spinner->hasFocus()) {
+                               is.spinner->setValue(note);
+                               is.spinner->selectAll();
+                       }
                }
-       }
+       });
 }
 
 pair<int, int> MIDIMappingDialog::guess_offset(unsigned bus_idx, MIDIMappingDialog::SpinnerGroup spinner_group)