This commit is contained in:
2026-02-25 15:11:15 +01:00
parent 994e21ebf5
commit 98108e6f35

View File

@@ -45,6 +45,7 @@
[queue #:mutable] [queue #:mutable]
[stopped #:mutable] [stopped #:mutable]
[paused #:mutable] [paused #:mutable]
pause-sem
) )
#:transparent #:transparent
) )
@@ -60,9 +61,9 @@
(let ((p (ao-shm-paused shm))) (let ((p (ao-shm-paused shm)))
(mutex-unlock (ao-shm-mutex shm)) (mutex-unlock (ao-shm-mutex shm))
(when p (when p
(sleep 0.25) (os-semaphore-wait (ao-shm-pause-sem shm)))
(player))) )
(os-semaphore-wait (ao-shm-queue-sem shm)) (os-semaphore-wait (ao-shm-queue-sem shm))
(mutex-lock (ao-shm-mutex shm)) (mutex-lock (ao-shm-mutex shm))
(if (= (queue-length (ao-shm-queue shm)) 0) (if (= (queue-length (ao-shm-queue shm)) 0)
@@ -107,7 +108,13 @@
) )
(define (ao-player ao_device) (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 #f))) (let ((shm (make-ao-shm (make-mutex)
ao_device
0.0 0.0 0
(make-os-semaphore) (make-queue)
#f
#f (make-os-semaphore))))
(os-semaphore-post (ao-shm-pause-sem shm))
(ao-player* shm) (ao-player* shm)
shm shm
) )
@@ -185,6 +192,15 @@
) )
(define (ao_pause_async shm pause) (define (ao_pause_async shm pause)
(set-ao-shm-paused! shm pause) (if pause
(begin
(displayln "Pausing ao play thread")
(os-semaphore-wait (ao-shm-pause-sem shm))
(set-ao-shm-paused! shm pause))
(begin
(displayln "Continuing ao play thread")
(set-ao-shm-paused! shm pause)
(os-semaphore-post (ao-shm-pause-sem shm)))
)
) )