This commit is contained in:
2026-02-25 13:47:51 +01:00
parent ae432628f6
commit 58793f3a14
6 changed files with 37 additions and 4 deletions

View File

@@ -13,6 +13,7 @@
ao_music_duration_async
ao_bufsize_async
ao_clear_async
ao_pause_async
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -43,6 +44,7 @@
queue-sem
[queue #:mutable]
[stopped #:mutable]
[paused #:mutable]
)
#:transparent
)
@@ -53,6 +55,14 @@
(λ ()
(let ((ao-device (ao-shm-device shm)))
(define (player)
(mutex-lock (ao-shm-mutex shm))
(let ((p (ao-shm-paused shm)))
(mutex-unlock (ao-shm-mutex shm))
(when p
(sleep 0.25)
(player)))
(os-semaphore-wait (ao-shm-queue-sem shm))
(mutex-lock (ao-shm-mutex shm))
(if (= (queue-length (ao-shm-queue shm)) 0)
@@ -97,7 +107,7 @@
)
(define (ao-player ao_device)
(let ((shm (make-ao-shm (make-mutex) ao_device 0.0 0.0 0 (make-os-semaphore) (make-queue) #f)))
(let ((shm (make-ao-shm (make-mutex) ao_device 0.0 0.0 0 (make-os-semaphore) (make-queue) #f #f)))
(ao-player* shm)
shm
)
@@ -173,4 +183,8 @@
(set-ao-shm-queue! shm (make-queue))
(set-ao-shm-bufsize! shm 0)
)
(define (ao_pause_async shm pause)
(set-ao-shm-paused! shm pause)
)