--- deliantra/Deliantra-Client/Client.xs 2007/07/29 03:58:26 1.212 +++ deliantra/Deliantra-Client/Client.xs 2007/07/31 00:56:02 1.216 @@ -817,6 +817,9 @@ int Mix_AllocateChannels (int numchans = -1) +const char * +Mix_GetError () + void lowdelay (int fd, int val = 1) CODE: @@ -2268,47 +2271,76 @@ PROTOTYPES: DISABLE -int -volume (CFPlus::Channel self, int volume) +CFPlus::Channel +find () CODE: - RETVAL = Mix_Volume (self, volume); +{ + RETVAL = Mix_GroupAvailable (-1); + + if (RETVAL < 0) + { + RETVAL = Mix_GroupOldest (-1); + + if (RETVAL < 0) + XSRETURN_UNDEF; + + Mix_HaltChannel (RETVAL); + } + + Mix_UnregisterAllEffects (RETVAL); + Mix_Volume (RETVAL, 128); +} OUTPUT: RETVAL +void +halt (CFPlus::Channel self) + CODE: + Mix_HaltChannel (self); + +void +expire (CFPlus::Channel self, int ticks = -1) + CODE: + Mix_ExpireChannel (self, ticks); + +void +fade_out (CFPlus::Channel self, int ticks = -1) + CODE: + Mix_FadeOutChannel (self, ticks); + int -unregister_all_effects (CFPlus::Channel self) +volume (CFPlus::Channel self, int volume) CODE: - RETVAL = Mix_UnregisterAllEffects (self); + RETVAL = Mix_Volume (self, CLAMP (volume, 0, 128)); OUTPUT: RETVAL -int +void +unregister_all_effects (CFPlus::Channel self) + CODE: + Mix_UnregisterAllEffects (self); + +void set_panning (CFPlus::Channel self, int left, int right) CODE: - RETVAL = Mix_SetPanning (self, left, right); - OUTPUT: - RETVAL + left = CLAMP (left , 0, 255); + right = CLAMP (right, 0, 255); + Mix_SetPanning (self, left, right); -int +void set_distance (CFPlus::Channel self, int distance) CODE: - RETVAL = Mix_SetDistance (self, distance); - OUTPUT: - RETVAL + Mix_SetDistance (self, CLAMP (distance, 0, 255)); -int +void set_position (CFPlus::Channel self, int angle, int distance) CODE: - RETVAL = Mix_SetPosition (self, angle, distance); - OUTPUT: - RETVAL + Mix_SetPosition (self, angle, CLAMP (distance, 0, 255)); -int +void set_reverse_stereo (CFPlus::Channel self, int flip) CODE: - RETVAL = Mix_SetReverseStereo (self, flip); - OUTPUT: - RETVAL + Mix_SetReverseStereo (self, flip); MODULE = CFPlus PACKAGE = CFPlus::MixChunk @@ -2329,15 +2361,27 @@ int volume (CFPlus::MixChunk self, int volume = -1) CODE: + if (items > 1) + volume = CLAMP (volume, 0, 128); RETVAL = Mix_VolumeChunk (self, volume); OUTPUT: RETVAL CFPlus::Channel -play (CFPlus::MixChunk self, int channel = -1, int loops = 0, int ticks = -1) +play (CFPlus::MixChunk self, CFPlus::Channel channel = -1, int loops = 0, int ticks = -1) CODE: +{ RETVAL = Mix_PlayChannelTimed (channel, self, loops, ticks); - Mix_UnregisterAllEffects (RETVAL); + + if (RETVAL < 0) + XSRETURN_UNDEF; + + if (channel < 0) + { + Mix_UnregisterAllEffects (RETVAL); + Mix_Volume (RETVAL, 128); + } +} OUTPUT: RETVAL @@ -2347,16 +2391,16 @@ volume (int volume = -1) PROTOTYPE: ;$ CODE: + if (items > 0) + volume = CLAMP (volume, 0, 128); RETVAL = Mix_VolumeMusic (volume); OUTPUT: RETVAL -int +void fade_out (int ms) CODE: - RETVAL = Mix_FadeOutMusic (ms); - OUTPUT: - RETVAL + Mix_FadeOutMusic (ms); void halt () @@ -2382,12 +2426,10 @@ OUTPUT: RETVAL -int +void fade_in_pos (CFPlus::MixMusic self, int loops, int ms, double position) CODE: - RETVAL = Mix_FadeInMusicPos (self, loops, ms, position); - OUTPUT: - RETVAL + Mix_FadeInMusicPos (self, loops, ms, position); MODULE = CFPlus PACKAGE = CFPlus::OpenGL