-
This commit is contained in:
@@ -45,6 +45,7 @@
|
||||
[queue #:mutable]
|
||||
[stopped #:mutable]
|
||||
[paused #:mutable]
|
||||
pause-sem
|
||||
)
|
||||
#:transparent
|
||||
)
|
||||
@@ -60,9 +61,9 @@
|
||||
(let ((p (ao-shm-paused shm)))
|
||||
(mutex-unlock (ao-shm-mutex shm))
|
||||
(when p
|
||||
(sleep 0.25)
|
||||
(player)))
|
||||
|
||||
(os-semaphore-wait (ao-shm-pause-sem shm)))
|
||||
)
|
||||
|
||||
(os-semaphore-wait (ao-shm-queue-sem shm))
|
||||
(mutex-lock (ao-shm-mutex shm))
|
||||
(if (= (queue-length (ao-shm-queue shm)) 0)
|
||||
@@ -107,7 +108,13 @@
|
||||
)
|
||||
|
||||
(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)
|
||||
shm
|
||||
)
|
||||
@@ -185,6 +192,15 @@
|
||||
)
|
||||
|
||||
(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)))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user