-
This commit is contained in:
@@ -45,6 +45,7 @@
|
|||||||
[queue #:mutable]
|
[queue #:mutable]
|
||||||
[stopped #:mutable]
|
[stopped #:mutable]
|
||||||
[paused #:mutable]
|
[paused #:mutable]
|
||||||
|
pause-sem
|
||||||
)
|
)
|
||||||
#:transparent
|
#:transparent
|
||||||
)
|
)
|
||||||
@@ -60,8 +61,8 @@
|
|||||||
(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))
|
||||||
@@ -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)))
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user