@@ -41,7 +41,6 @@ class NeuralRack : public TextEntry
4141 NeuralRack () : engine() {
4242 workToDo.store (false , std::memory_order_release);
4343 presetToLoad.store (false , std::memory_order_release);
44- processCounter = 0 ;
4544 settingsHaveChanged = false ;
4645 disableAutoConnect = false ;
4746 s_time = 0.0 ;
@@ -481,7 +480,6 @@ class NeuralRack : public TextEntry
481480 Widget_t* AutoConnect;
482481 Widget_t* EngineMenu;
483482 Widget_t* ASIOPannel;
484- int processCounter;
485483 bool settingsHaveChanged;
486484 bool disableAutoConnect;
487485 std::atomic<bool > workToDo;
@@ -989,12 +987,6 @@ class NeuralRack : public TextEntry
989987
990988 // timeout loop to check output ports from engine
991989 void checkEngine () {
992- // come back later
993- if (!engine.bufferIsInit .load (std::memory_order_acquire)) return ;
994- if (processCounter < 1 ) {
995- processCounter++;
996- return ;
997- }
998990 #if defined(__linux__) || defined(__FreeBSD__) || \
999991 defined (__NetBSD__) || defined (__OpenBSD__)
1000992 XLockDisplay (ui->main .dpy );
@@ -1007,9 +999,9 @@ class NeuralRack : public TextEntry
1007999 XUnlockDisplay (ui->main .dpy );
10081000 #endif
10091001 if (workToDo.load (std::memory_order_acquire)) {
1010- if (engine.xrworker .getProcess ()) {
1002+ if (engine.xrworker .getProcess () &&
1003+ !engine._execute .exchange (true , std::memory_order_acq_rel)) {
10111004 workToDo.store (false , std::memory_order_release);
1012- engine._execute .store (true , std::memory_order_release);
10131005 engine.xrworker .runProcess ();
10141006 }
10151007 } else if (engine._notify_ui .load (std::memory_order_acquire)) {
0 commit comments