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
-Subproject commit a982b4368dc4a90c46c7e20aecbf6a2c69cd7839
+Subproject commit 549053153c3de75b8e1c0bc46842abc149891575
static DRVRUN(dummy_run) {
while (di->is_running) {
di->run(vm);
- ++di->pos;
+ next_bbq_pos(vm);
}
}
}
}
+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);