From 0f856dede560f2236e8433c15857c3cf824542b5 Mon Sep 17 00:00:00 2001 From: Matthias Felleisen Date: Fri, 5 Nov 2010 21:25:17 -0400 Subject: [PATCH] sync bug eliminated --- collects/2htdp/private/last.rkt | 2 +- collects/2htdp/universe.rkt | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/collects/2htdp/private/last.rkt b/collects/2htdp/private/last.rkt index b87bf1797c..e315007076 100644 --- a/collects/2htdp/private/last.rkt +++ b/collects/2htdp/private/last.rkt @@ -16,7 +16,7 @@ ;; -> World (define/public (last) - (define result (sync #;yield end:ch)) ;; bug? + (define result (yield end:ch)) (if (exn? result) (raise result) result)) (field [dr:cust (current-custodian)]) diff --git a/collects/2htdp/universe.rkt b/collects/2htdp/universe.rkt index 2ceae80a01..1b0e22344c 100644 --- a/collects/2htdp/universe.rkt +++ b/collects/2htdp/universe.rkt @@ -5,7 +5,6 @@ #| TODO: -- check that on-release is only defined if on-key is defined - -- yield instead of sync -- run callbacks in user eventspace -- make timer fire just once; restart after on-tick callback finishes -- take out counting; replace by 0.25 delay @@ -338,5 +337,8 @@ (define esp (make-eventspace)) (define thd (eventspace-handler-thread esp)) (with-handlers ((exn:break? (lambda (x) (break-thread thd)))) + (define obj:ch (make-channel)) (parameterize ([current-eventspace esp]) - (send (o) last)))) + (queue-callback (lambda () (channel-put obj:ch (o))))) + (send (channel-get obj:ch) last))) +