From: Alexander Kurtz Date: Sat, 4 Feb 2012 16:31:12 +0000 (+0100) Subject: sdl: Make AudioSpec a struct, then fix Audio.open(), load() and mix() X-Git-Tag: 0.15.2~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b467622bf89b6992eea7c6d15715525c95772727;p=thirdparty%2Fvala.git sdl: Make AudioSpec a struct, then fix Audio.open(), load() and mix() Fixes bug 669279. --- diff --git a/vapi/sdl.vapi b/vapi/sdl.vapi index 3adf4f243..52ddaaebc 100644 --- a/vapi/sdl.vapi +++ b/vapi/sdl.vapi @@ -981,9 +981,11 @@ namespace SDL { STOPPED, PLAYING, PAUSED }// AudioStatus + [CCode (instance_pos = 0.1)] + public delegate void AudioCallback(uint8[] stream); + [CCode (cname="SDL_AudioSpec")] - [Compact] - public class AudioSpec { + public struct AudioSpec { public int freq; public AudioFormat format; public uchar channels; @@ -991,8 +993,8 @@ namespace SDL { public uint16 samples; public uint16 padding; public uint32 size; - - public void* userdata; + [CCode (delegate_target_cname = "userdata")] + public unowned AudioCallback callback; }// AudioSpec [CCode (cname="SDL_AudioCVT")] @@ -1021,11 +1023,14 @@ namespace SDL { [Compact] public class Audio { + [CCode (cname="SDL_MIX_MAXVOLUME")] + public const int MIX_MAXVOLUME; + [CCode (cname="SDL_AudioDriverName")] public static unowned string driver_name(string namebuf, int maxlen); [CCode (cname="SDL_OpenAudio")] - public static int open(AudioSpec desired, AudioSpec obtained); + public static int open(AudioSpec desired, out AudioSpec obtained); [CCode (cname="SDL_GetAudioStatus")] public static AudioStatus status(); @@ -1034,13 +1039,13 @@ namespace SDL { public static void pause(int pause_on); [CCode (cname="SDL_LoadWAV_RW")] - public static AudioSpec load(RWops src, int freesrc=0, AudioSpec spec, uchar** audio_buf, ref uint32 audio_len); + public static unowned AudioSpec? load(RWops src, int freesrc=0, ref AudioSpec spec, out uint8[] audio_buf); [CCode (cname="SDL_FreeWAV")] public static void free(uchar* audio_buf); [CCode (cname="SDL_MixAudio")] - public static void mix(uchar[] dst, uchar[] src, uint32 len, int volume); + public static void mix([CCode (array_length = false)] uchar[] dst, [CCode (array_length = false)] uchar[] src, uint32 len, int volume); [CCode (cname="SDL_LockAudio")] public static void do_lock();