forward port fix from r8100/05/06 to trunk

svn: r8107
This commit is contained in:
Greg Cooper 2007-12-22 17:55:57 +00:00
parent b4681b4ca5
commit 58c95cf5c3
2 changed files with 10 additions and 8 deletions

View File

@ -229,9 +229,16 @@
(iq-enqueue sig)
sig))))
(define ht (make-hash-table))
(define (proc->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)
(build-signal make-signal:unchanged thunk producers))

View File

@ -367,7 +367,6 @@
(current-milliseconds))
empty)]
[head last]
[dummy 0]
[producer (proc->signal
(lambda ()
(let* ([now (current-milliseconds)]
@ -377,10 +376,9 @@
(< now (+ ms (cdr (mcar (mcdr head))))))
(car (mcar head))
(begin
(set! dummy consumer) ;; just to prevent GC
(set! head (mcdr head))
(loop)))))))]
[consumer (proc->signal
[consumer (proc->signal/dont-gc-unless producer
(lambda ()
(let* ([now (current-milliseconds)]
[new (deep-value-now beh)]
@ -405,11 +403,8 @@
[last-time (current-milliseconds)]
[last-val (value-now b)]
[last-alarm 0]
[dummy 0]
[producer (proc->signal (lambda ()
(set! dummy consumer) ;; just to prevent GC
accum))]
[consumer (proc->signal void b ms-b)])
[producer (proc->signal (lambda () accum))]
[consumer (proc->signal/dont-gc-unless producer void b ms-b)])
(set-signal-thunk!
consumer
(lambda ()