--- deliantra/Deliantra-Client/Client.xs 2007/07/29 03:58:26 1.212 +++ deliantra/Deliantra-Client/Client.xs 2007/07/31 00:50:04 1.215 @@ -817,6 +817,9 @@ int Mix_AllocateChannels (int numchans = -1) +const char * +Mix_GetError () + void lowdelay (int fd, int val = 1) CODE: @@ -2268,6 +2271,43 @@ PROTOTYPES: DISABLE +CFPlus::Channel +find () + CODE: +{ + 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 volume (CFPlus::Channel self, int volume) CODE: @@ -2275,40 +2315,30 @@ OUTPUT: RETVAL -int +void unregister_all_effects (CFPlus::Channel self) CODE: - RETVAL = Mix_UnregisterAllEffects (self); - OUTPUT: - RETVAL + Mix_UnregisterAllEffects (self); -int +void set_panning (CFPlus::Channel self, int left, int right) CODE: - RETVAL = Mix_SetPanning (self, left, right); - OUTPUT: - RETVAL + 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, distance); -int +void set_position (CFPlus::Channel self, int angle, int distance) CODE: - RETVAL = Mix_SetPosition (self, angle, distance); - OUTPUT: - RETVAL + Mix_SetPosition (self, angle, distance); -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 @@ -2334,10 +2364,20 @@ 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 @@ -2351,12 +2391,10 @@ OUTPUT: RETVAL -int +void fade_out (int ms) CODE: - RETVAL = Mix_FadeOutMusic (ms); - OUTPUT: - RETVAL + Mix_FadeOutMusic (ms); void halt () @@ -2382,12 +2420,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