Using a custodian shutdown to shutdown ao instead of a plumber.

This seems much more reliable.
This commit is contained in:
2026-04-11 21:56:12 +02:00
parent 3b4dcae970
commit f6a0f8e9cb

View File

@@ -4,6 +4,7 @@
(prefix-in fin: finalizer) (prefix-in fin: finalizer)
(prefix-in ffi: "libao-async-ffi.rkt") (prefix-in ffi: "libao-async-ffi.rkt")
ffi/unsafe ffi/unsafe
ffi/unsafe/custodian
data/queue data/queue
"private/utils.rkt" "private/utils.rkt"
) )
@@ -37,7 +38,23 @@
(ao_initialize) (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) (plumber-add-flush! (current-plumber)
(lambda (my-handle) (lambda (my-handle)
(hash-for-each devices (hash-for-each devices
@@ -49,6 +66,9 @@
(ao_shutdown) (ao_shutdown)
(plumber-flush-handle-remove! my-handle) (plumber-flush-handle-remove! my-handle)
))) )))
|#