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* ;
 | 
					    [ dupd [ mod ] [ swap - ] bi + + ] [ 2drop f ] if* ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
: next-nanos ( timer -- timer n/f )
 | 
					: next-nanos ( timer -- timer n/f )
 | 
				
			||||||
    dup thread>> self eq? [
 | 
					    dup thread>> self eq? [ dup next-nanos>> ] [ f ] if ;
 | 
				
			||||||
        dup next-nanos>> dup t eq? [
 | 
					 | 
				
			||||||
            drop dup delay-nanos [ >>next-nanos ] keep
 | 
					 | 
				
			||||||
        ] when
 | 
					 | 
				
			||||||
    ] [ f ] if ;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
: run-timer ( timer -- timer )
 | 
					: run-timer ( timer -- timer )
 | 
				
			||||||
    dup interval-nanos >>next-nanos
 | 
					    dup interval-nanos >>next-nanos
 | 
				
			||||||
| 
						 | 
					@ -65,7 +61,7 @@ ERROR: timer-already-started timer ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
: start-timer ( timer -- )
 | 
					: start-timer ( timer -- )
 | 
				
			||||||
    dup thread>> [ timer-already-started ] when
 | 
					    dup thread>> [ timer-already-started ] when
 | 
				
			||||||
    t >>next-nanos
 | 
					    dup delay-nanos >>next-nanos
 | 
				
			||||||
    dup '[ _ timer-loop ] "Timer" <thread>
 | 
					    dup '[ _ timer-loop ] "Timer" <thread>
 | 
				
			||||||
    [ >>thread drop ] [ (spawn) ] bi ;
 | 
					    [ >>thread drop ] [ (spawn) ] bi ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -74,7 +70,8 @@ ERROR: timer-already-started timer ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
: restart-timer ( timer -- )
 | 
					: restart-timer ( timer -- )
 | 
				
			||||||
    dup thread>> [
 | 
					    dup thread>> [
 | 
				
			||||||
        t >>next-nanos [ thread>> ] [ ?interrupt ] bi
 | 
					        dup delay-nanos >>next-nanos
 | 
				
			||||||
 | 
					        [ thread>> ] [ ?interrupt ] bi
 | 
				
			||||||
    ] [
 | 
					    ] [
 | 
				
			||||||
        start-timer
 | 
					        start-timer
 | 
				
			||||||
    ] if ;
 | 
					    ] if ;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue