diff --git a/libao-async-ffi-racket.rkt b/libao-async-ffi-racket.rkt index 7a73545..31db370 100644 --- a/libao-async-ffi-racket.rkt +++ b/libao-async-ffi-racket.rkt @@ -474,34 +474,40 @@ (get h 150)))) (mutex-unlock (ao-handle-clear-mutex h)) (if (eq? elem #f) - (begin - (dbg-sound "nothing in the queue") - (sleep 0.01)) - (begin - (if (eq? (queue-elem-command elem) 'stop) - (set! go-on #f) + (if (ao-handle-paused h) (begin - (set-ao-handle-at-second! h (queue-elem-at-second elem)) - (set-ao-handle-music-duration! h (queue-elem-music-duration elem)) - (set-ao-handle-music-id! h (queue-elem-music-id elem)) + (dbg-sound "run thread paused") + (sleep 0.1) + ) + (begin + (dbg-sound "nothing in the queue") + (sleep 0.01)) + ) + (begin + (if (eq? (queue-elem-command elem) 'stop) + (set! go-on #f) + (begin + (set-ao-handle-at-second! h (queue-elem-at-second elem)) + (set-ao-handle-music-duration! h (queue-elem-music-duration elem)) + (set-ao-handle-music-id! h (queue-elem-music-id elem)) - (unless (= (ao-handle-volume-in-10000 h) 10000) - (adjust-volume h (queue-elem-buf elem) (queue-elem-buflen elem) - (ao-handle-volume-in-10000 h))) + (unless (= (ao-handle-volume-in-10000 h) 10000) + (adjust-volume h (queue-elem-buf elem) (queue-elem-buflen elem) + (ao-handle-volume-in-10000 h))) - (let* ((size (queue-elem-buflen elem))) - (when (> size buf-size) - (set! buf (malloc size 'atomic-interior )) - (set! buf-size size)) - (memcpy buf (queue-elem-buf elem) size) - (ao_play (ao-handle-ao-device h) buf size) + (let* ((size (queue-elem-buflen elem))) + (when (> size buf-size) + (set! buf (malloc size 'atomic-interior )) + (set! buf-size size)) + (memcpy buf (queue-elem-buf elem) size) + (ao_play (ao-handle-ao-device h) buf size) + ) ) ) - ) - (del-elem h elem) + (del-elem h elem) + ) ) - ) ) ) ) @@ -767,6 +773,7 @@ (when (eq? paused #t) (mutex-lock (ao-handle-pause-mutex h)) (set-ao-handle-paused! h #t) + (dbg-sound "paused") ) ) )