@@ -59,19 +59,16 @@ function fpswhen(switch, rate)
59
59
end
60
60
61
61
function setup_next_tick (outputref, switchref, dt, wait_dt)
62
- weakrefdo (switchref, value, ()-> false ) && Timer (t -> begin
63
- weakrefdo (switchref, value, ()-> false ) &&
64
- weakrefdo (outputref, x -> push! (x, dt))
65
- end , wait_dt)
66
- end
67
-
68
- function weakrefdo (ref, yes, no= ()-> nothing )
69
- ref. value != nothing ? yes (ref. value) : no ()
62
+ if value (switchref. value)
63
+ Timer (t -> if value (switchref. value)
64
+ _push! (outputref, dt)
65
+ end , wait_dt)
66
+ end
70
67
end
71
68
72
69
function fpswhen_connect (rate, switch, output)
73
- let prev_time = time (),
74
- dt = 1.0 / rate,
70
+ let prev_time = time ()
71
+ dt = 1.0 / rate
75
72
outputref = WeakRef (output)
76
73
switchref = WeakRef (switch)
77
74
switch_ticks = filter (x-> x, false , switch) # only turn-ons
@@ -80,7 +77,7 @@ function fpswhen_connect(rate, switch, output)
80
77
for inp in [output, switch_ticks]
81
78
add_action! (inp, output) do output, timestep
82
79
start_time = time ()
83
- setup_next_tick (outputref, switchref, time () - prev_time, dt)
80
+ setup_next_tick (outputref, switchref, start_time - prev_time, dt)
84
81
prev_time = start_time
85
82
end
86
83
end
0 commit comments