diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libao.adb | 5 | ||||
-rw-r--r-- | src/libao.ads | 5 |
2 files changed, 7 insertions, 3 deletions
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; |