Using a custodian shutdown to shutdown ao instead of a plumber.
This seems much more reliable.
This commit is contained in:
22
libao.rkt
22
libao.rkt
@@ -4,6 +4,7 @@
|
||||
(prefix-in fin: finalizer)
|
||||
(prefix-in ffi: "libao-async-ffi.rkt")
|
||||
ffi/unsafe
|
||||
ffi/unsafe/custodian
|
||||
data/queue
|
||||
"private/utils.rkt"
|
||||
)
|
||||
@@ -37,7 +38,23 @@
|
||||
|
||||
(ao_initialize)
|
||||
|
||||
(define libao-plumber-flus-handle
|
||||
(define (ao-finalizer devices)
|
||||
(hash-for-each devices
|
||||
(lambda (handle-num device)
|
||||
(ao-close handle-num)))
|
||||
(set! devices (make-hash))
|
||||
(ao_shutdown)
|
||||
)
|
||||
|
||||
(define custodian-finalizer
|
||||
(register-custodian-shutdown devices
|
||||
(λ (devices)
|
||||
(ao-finalizer devices))
|
||||
#:at-exit? #t)
|
||||
)
|
||||
|
||||
#|
|
||||
(define libao-plumber-flush-handle
|
||||
(plumber-add-flush! (current-plumber)
|
||||
(lambda (my-handle)
|
||||
(hash-for-each devices
|
||||
@@ -49,6 +66,9 @@
|
||||
(ao_shutdown)
|
||||
(plumber-flush-handle-remove! my-handle)
|
||||
)))
|
||||
|#
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user