From a9a297e8f7282bcc9b3ffb14862160bb1abad511 Mon Sep 17 00:00:00 2001 From: Jedidiah Barber Date: Wed, 26 Jul 2023 22:32:42 +1200 Subject: Changed data buffer type for better interop with other libraries --- src/libao.adb | 5 +++-- src/libao.ads | 5 ++++- 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/libao.adb b/src/libao.adb index 0875ba4..48a0ac1 100644 --- a/src/libao.adb +++ b/src/libao.adb @@ -119,7 +119,7 @@ package body Libao is function ao_play (Output_Device : in System.Address; - Samples : in Interfaces.C.char_array; + Samples : in System.Address; Num_Bytes : in Interfaces.Unsigned_32) return Interfaces.C.int; pragma Import (C, ao_play, "ao_play"); @@ -588,7 +588,8 @@ package body Libao is is Result : Interfaces.C.int := ao_play (Output_Device => Output.Ptr, - Samples => Interfaces.C.To_C (Item => String (Samples), Append_Nul => False), + Samples => Samples'Address, + --Samples => Interfaces.C.To_C (Item => String (Samples), Append_Nul => False), Num_Bytes => Interfaces.Unsigned_32 (Samples'Length)); begin if Result = 0 then diff --git a/src/libao.ads b/src/libao.ads index baea557..db5f7ce 100644 --- a/src/libao.ads +++ b/src/libao.ads @@ -29,7 +29,7 @@ package Libao is type Driver_ID_Number is new Natural; - type Data_Buffer is new String; + type Data_Buffer is array (Positive range <>) of Interfaces.Unsigned_8; type Device is tagged private; @@ -214,6 +214,9 @@ private pragma Linker_Options ("-lao"); + for Data_Buffer'Component_Size use Interfaces.C.CHAR_BIT; + + procedure Do_Append (Ptr : in out System.Address; Key : in Interfaces.C.char_array; -- cgit