From 626670699f3fe23dc2890e5e486c138217e163c8 Mon Sep 17 00:00:00 2001 From: Hans Dijkema Date: Wed, 25 Feb 2026 10:15:51 +0100 Subject: [PATCH] - --- libao/libao-async-ffi.rkt | 11 +++++++---- libao/libao.rkt | 6 ++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/libao/libao-async-ffi.rkt b/libao/libao-async-ffi.rkt index a0ca304..0a9fd04 100644 --- a/libao/libao-async-ffi.rkt +++ b/libao/libao-async-ffi.rkt @@ -11,6 +11,7 @@ ao_stop_async ao_play_async ao_is_at_second_async + ao_music_duration_async ao_bufsize_async ao_clear_async ) @@ -26,16 +27,18 @@ ;extern void ao_stop_async(void *handle); (define-libao-async ao_stop_async(_fun _libao-async-handle-pointer -> _void)) -;extern void ao_play_async(void *handle, double at_second, int buf_size, void *mem); -(define-libao-async ao_play_async(_fun _libao-async-handle-pointer _double _uint32 _pointer -> _void)) +;extern void ao_play_async(void *handle, double at_second, double music_duration, int buf_size, void *mem); +(define-libao-async ao_play_async(_fun _libao-async-handle-pointer _double _double _uint32 _pointer -> _void)) ;extern double ao_is_at_second_async(void *handle); (define-libao-async ao_is_at_second_async(_fun _libao-async-handle-pointer -> _double)) - +;extern double ao_music_duration_async(void *handle); +(define-libao-async ao_music_duration_async(_fun _libao-async-handle-pointer -> _double)) ;extern int ao_bufsize_async(void *handle); (define-libao-async ao_bufsize_async(_fun _libao-async-handle-pointer -> _int)) ;extern void ao_clear_async(void *handle); -(define-libao-async ao_clear_async(_fun _libao-async-handle-pointer -> _void)) \ No newline at end of file +(define-libao-async ao_clear_async(_fun _libao-async-handle-pointer -> _void)) + diff --git a/libao/libao.rkt b/libao/libao.rkt index 2ccaf7d..2339f1a 100644 --- a/libao/libao.rkt +++ b/libao/libao.rkt @@ -16,6 +16,7 @@ ao-close ao-default-driver-id ao-at-second + ao-music-duration ao-bufsize-async ao-clear-async ao-set-async-mode! @@ -232,6 +233,11 @@ (ffi:ao_is_at_second_async (ao-handle-async-player handle)) (scm:ao_is_at_second_async (ao-handle-async-player handle)))) +(define (ao-music-duration handle) + (if (eq? libao-async-mode 'ffi) + (ffi:ao_music_duration_async (ao-handle-async-player handle)) + (scm:ao_music_duration_async (ao-handle-async-player handle)))) + (define (ao-bufsize-async handle) (if (eq? libao-async-mode 'ffi) (ffi:ao_bufsize_async (ao-handle-async-player handle))