diff --git a/libao/libao-async.rkt b/libao/libao-async.rkt index 9d93591..dfd8712 100644 --- a/libao/libao-async.rkt +++ b/libao/libao-async.rkt @@ -115,8 +115,15 @@ (let ((w (ao-shm-stopped shm))) (mutex-unlock (ao-shm-mutex shm)) w)))) - (while (eq? (stopped) #f)) - (sleep 0.01)) + (letrec ((loop (λ () + (if (eq? (stopped) #t) + 'stopped + (begin + (sleep 0.01) + (loop)))))) + (loop) + 'stopped) + ) ) (define (ao_play_async shm at-second buf-size buf)