forward port fix from r8100/05/06 to trunk
svn: r8107
This commit is contained in:
parent
b4681b4ca5
commit
58c95cf5c3
|
@ -229,9 +229,16 @@
|
||||||
(iq-enqueue sig)
|
(iq-enqueue sig)
|
||||||
sig))))
|
sig))))
|
||||||
|
|
||||||
|
(define ht (make-hash-table))
|
||||||
|
|
||||||
(define (proc->signal thunk . producers)
|
(define (proc->signal thunk . producers)
|
||||||
(build-signal make-signal thunk producers))
|
(build-signal make-signal thunk producers))
|
||||||
|
|
||||||
|
(define (proc->signal/dont-gc-unless other-val thunk . producers)
|
||||||
|
(let ([result (build-signal make-signal thunk producers)])
|
||||||
|
(hash-table-put! ht other-val result)
|
||||||
|
result))
|
||||||
|
|
||||||
(define (proc->signal:unchanged thunk . producers)
|
(define (proc->signal:unchanged thunk . producers)
|
||||||
(build-signal make-signal:unchanged thunk producers))
|
(build-signal make-signal:unchanged thunk producers))
|
||||||
|
|
||||||
|
|
|
@ -367,7 +367,6 @@
|
||||||
(current-milliseconds))
|
(current-milliseconds))
|
||||||
empty)]
|
empty)]
|
||||||
[head last]
|
[head last]
|
||||||
[dummy 0]
|
|
||||||
[producer (proc->signal
|
[producer (proc->signal
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(let* ([now (current-milliseconds)]
|
(let* ([now (current-milliseconds)]
|
||||||
|
@ -377,10 +376,9 @@
|
||||||
(< now (+ ms (cdr (mcar (mcdr head))))))
|
(< now (+ ms (cdr (mcar (mcdr head))))))
|
||||||
(car (mcar head))
|
(car (mcar head))
|
||||||
(begin
|
(begin
|
||||||
(set! dummy consumer) ;; just to prevent GC
|
|
||||||
(set! head (mcdr head))
|
(set! head (mcdr head))
|
||||||
(loop)))))))]
|
(loop)))))))]
|
||||||
[consumer (proc->signal
|
[consumer (proc->signal/dont-gc-unless producer
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(let* ([now (current-milliseconds)]
|
(let* ([now (current-milliseconds)]
|
||||||
[new (deep-value-now beh)]
|
[new (deep-value-now beh)]
|
||||||
|
@ -405,11 +403,8 @@
|
||||||
[last-time (current-milliseconds)]
|
[last-time (current-milliseconds)]
|
||||||
[last-val (value-now b)]
|
[last-val (value-now b)]
|
||||||
[last-alarm 0]
|
[last-alarm 0]
|
||||||
[dummy 0]
|
[producer (proc->signal (lambda () accum))]
|
||||||
[producer (proc->signal (lambda ()
|
[consumer (proc->signal/dont-gc-unless producer void b ms-b)])
|
||||||
(set! dummy consumer) ;; just to prevent GC
|
|
||||||
accum))]
|
|
||||||
[consumer (proc->signal void b ms-b)])
|
|
||||||
(set-signal-thunk!
|
(set-signal-thunk!
|
||||||
consumer
|
consumer
|
||||||
(lambda ()
|
(lambda ()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user