From: fennecdjay Date: Sat, 6 Apr 2019 07:36:54 +0000 (+0200) Subject: :art: Introduce GWION_EPSILON X-Git-Tag: nightly~2550 X-Git-Url: http://10.11.0.4:5575/?a=commitdiff_plain;h=44447314cd44e1dff491c66462f7614cc13d2b58;p=gwion.git :art: Introduce GWION_EPSILON --- diff --git a/src/lib/event.c b/src/lib/event.c index 16e7cc35..c1d5e0f1 100644 --- a/src/lib/event.c +++ b/src/lib/event.c @@ -37,7 +37,7 @@ static MFUN(event_signal) { const Vector v = EV_SHREDS(o); const VM_Shred sh = (VM_Shred)vector_front(v); if(sh) { - shredule(sh->tick->shreduler, sh, .5); + shredule(sh->tick->shreduler, sh, GWION_EPSILON); vector_rem(v, 0); } } @@ -45,7 +45,7 @@ static MFUN(event_signal) { ANN void broadcast(const M_Object o) { for(m_uint i = 0; i < vector_size(EV_SHREDS(o)); i++) { const VM_Shred sh = (VM_Shred)vector_at(EV_SHREDS(o), i); - shredule(sh->tick->shreduler, sh, .5); + shredule(sh->tick->shreduler, sh, GWION_EPSILON); } vector_clear(EV_SHREDS(o)); } diff --git a/src/lib/shred.c b/src/lib/shred.c index 2100c571..1cc0a467 100644 --- a/src/lib/shred.c +++ b/src/lib/shred.c @@ -50,7 +50,7 @@ static MFUN(vm_shred_is_done) { static MFUN(shred_yield) { const VM_Shred s = ME(o); const Shreduler sh = shred->tick->shreduler; - shredule(sh, s, .5); + shredule(sh, s, GWION_EPSILON); } static SFUN(vm_shred_from_id) { diff --git a/src/vm/vm.c b/src/vm/vm.c index ee99e276..d84efeaa 100644 --- a/src/vm/vm.c +++ b/src/vm/vm.c @@ -83,7 +83,7 @@ ANN m_uint vm_add_shred(const VM* vm, const VM_Shred shred) { shred->info->vm = (VM*)vm; shred->info->me = new_shred(shred, 1); shreduler_add(vm->shreduler, shred); - shredule(vm->shreduler, shred, .5); + shredule(vm->shreduler, shred, GWION_EPSILON); return shred->tick->xid; } @@ -91,10 +91,8 @@ ANN m_uint vm_add_shred(const VM* vm, const VM_Shred shred) { ANN m_uint vm_fork(const VM* src, const VM_Shred shred) { VM* vm = shred->info->vm = gwion_cpy(src); shred->info->me = new_shred(shred, 0); -// shreduler_add(vm->shreduler, shred); -// shredule(vm->shreduler, shred, .5); shreduler_add(vm->shreduler, shred); - shredule(vm->shreduler, shred, .5); + shredule(vm->shreduler, shred, GWION_EPSILON); return shred->tick->xid; } @@ -573,17 +571,12 @@ ftoi: timeadv: reg -= SZ_FLOAT; -{ - register const m_float f = *(m_float*)(reg-SZ_FLOAT); - *(m_float*)(reg-SZ_FLOAT) = (shred->tick->wake_time += f); -//printf("here adv %p %lu\n", s, s->bbq->is_running); - shredule(s, shred, f); -//printf("here adv %p %p %lu\n", shred->tick->shreduler, s, s->bbq->is_running); -} -shred->code = code; -shred->reg = reg; -shred->mem = mem; -shred->pc = pc; + shredule(s, shred, *(m_float*)(reg-SZ_FLOAT)); + *(m_float*)(reg-SZ_FLOAT) += vm->bbq->pos; + shred->code = code; + shred->reg = reg; + shred->mem = mem; + shred->pc = pc; break; setcode: a.code = *(VM_Code*)(reg-SZ_INT); diff --git a/util b/util index 190bd8ef..83e0acd9 160000 --- a/util +++ b/util @@ -1 +1 @@ -Subproject commit 190bd8eff25ba0891a831725a90eab7e4dafc5dd +Subproject commit 83e0acd944da2d54c63075a8a1b3c4fb964d8138