timers: simplify by setting delay-nanos directly.
parent
07833d94c6
commit
2235eadf04
|
@ -29,11 +29,7 @@ M: duration >nanoseconds duration>nanoseconds >integer ;
|
|||
[ dupd [ mod ] [ swap - ] bi + + ] [ 2drop f ] if* ;
|
||||
|
||||
: next-nanos ( timer -- timer n/f )
|
||||
dup thread>> self eq? [
|
||||
dup next-nanos>> dup t eq? [
|
||||
drop dup delay-nanos [ >>next-nanos ] keep
|
||||
] when
|
||||
] [ f ] if ;
|
||||
dup thread>> self eq? [ dup next-nanos>> ] [ f ] if ;
|
||||
|
||||
: run-timer ( timer -- timer )
|
||||
dup interval-nanos >>next-nanos
|
||||
|
@ -65,7 +61,7 @@ ERROR: timer-already-started timer ;
|
|||
|
||||
: start-timer ( timer -- )
|
||||
dup thread>> [ timer-already-started ] when
|
||||
t >>next-nanos
|
||||
dup delay-nanos >>next-nanos
|
||||
dup '[ _ timer-loop ] "Timer" <thread>
|
||||
[ >>thread drop ] [ (spawn) ] bi ;
|
||||
|
||||
|
@ -74,7 +70,8 @@ ERROR: timer-already-started timer ;
|
|||
|
||||
: restart-timer ( timer -- )
|
||||
dup thread>> [
|
||||
t >>next-nanos [ thread>> ] [ ?interrupt ] bi
|
||||
dup delay-nanos >>next-nanos
|
||||
[ thread>> ] [ ?interrupt ] bi
|
||||
] [
|
||||
start-timer
|
||||
] if ;
|
||||
|
|
Loading…
Reference in New Issue