]> Nishi Git Mirror - gwion.git/commitdiff
:art: use next_bbq_pos
authorJérémie Astor <fennecdjay@gmail.com>
Thu, 1 Jul 2021 15:53:30 +0000 (17:53 +0200)
committerJérémie Astor <fennecdjay@gmail.com>
Thu, 1 Jul 2021 15:53:30 +0000 (17:53 +0200)
include/vm.h
plug
src/vm/driver.c
src/vm/vm.c

index 9922c002bbb253df3ea08c8c02ecb0dcbcd6c7f7..471f48222b4712c2385f372f39d649c51c284faa 100644 (file)
@@ -136,4 +136,9 @@ ANN m_str code_name(const m_str, const bool);
 ANN uint32_t gw_rand(uint32_t s[2]);
 ANN void     gw_seed(uint32_t s[2], const uint64_t);
 ANN void     handle(VM_Shred shred, const m_str effect);
+
+
+#define BBQ_POS_MAX 16777216
+
+void next_bbq_pos(const VM *vm);
 #endif
diff --git a/plug b/plug
index a982b4368dc4a90c46c7e20aecbf6a2c69cd7839..549053153c3de75b8e1c0bc46842abc149891575 160000 (submodule)
--- a/plug
+++ b/plug
@@ -1 +1 @@
-Subproject commit a982b4368dc4a90c46c7e20aecbf6a2c69cd7839
+Subproject commit 549053153c3de75b8e1c0bc46842abc149891575
index d6f289f5ac713933907f1748525342c87c301331..d229dd5b164c80d728467dda3130001894fc44df 100644 (file)
@@ -31,7 +31,7 @@ ANN void driver_alloc(Driver *d) {
 static DRVRUN(dummy_run) {
   while (di->is_running) {
     di->run(vm);
-    ++di->pos;
+    next_bbq_pos(vm);
   }
 }
 
index 040f7062b85a2294bc2db920f27660d9cef84abc..7ec9cbac5204708aef711120760430fac860bca5 100644 (file)
@@ -1202,6 +1202,17 @@ vm_run(const VM *vm) { // lgtm [cpp/use-of-goto]
   }
 }
 
+static inline next_bbq_pos(const VM *vm) {
+  Driver *const di = vm->bbq;
+  if(++di->pos == 16777216-1) {
+    for(m_uint i = 0; i < vector_size(&vm->shreduler->shreds); i++) {
+      const VM_Shred shred = (VM_Shred)vector_at(&vm->shreduler->shreds, i);
+      shred->tick->wake_time -= 16777216.0;
+    }
+    di->pos = 0;
+  }
+}
+
 static void vm_run_audio(const VM *vm) {
   vm_run(vm);
   vm_ugen_init(vm);