From 4c46581ae15d50f608279555b615c7031deb6dcb Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Wed, 25 Jun 2025 08:11:17 +0200 Subject: [PATCH] =?UTF-8?q?-=20[FIX]=20Els=20sonsse=20tallaven=20en=20comp?= =?UTF-8?q?te=20de=20usar=20un=20nou=20canal.=20-=20[FIX]=20La=20repetici?= =?UTF-8?q?=C3=B3=20de=20sons=20no=20infinita=20no=20funcionava.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jail_audio.cpp | 18 ++++++++++-------- jail_audio.h | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/jail_audio.cpp b/jail_audio.cpp index 587b70e..176aef9 100644 --- a/jail_audio.cpp +++ b/jail_audio.cpp @@ -125,14 +125,15 @@ Uint32 JA_UpdateCallback(void *userdata, SDL_TimerID timerID, Uint32 interval) { if (channels[i].times != 0) { - if (SDL_GetAudioStreamAvailable(channels[i].stream) < (channels[i].sound->length/2)) + if (SDL_GetAudioStreamAvailable(channels[i].stream) < (channels[i].sound->length/2)) { SDL_PutAudioStreamData(channels[i].stream, channels[i].sound->buffer, channels[i].sound->length); - if (channels[i].times>0) channels[i].times--; + if (channels[i].times>0) channels[i].times--; + } + } + else + { + if (SDL_GetAudioStreamAvailable(channels[i].stream) == 0) JA_StopChannel(i); } - } - else - { - if (SDL_GetAudioStreamAvailable(channels[i].stream) == 0) JA_StopChannel(i); } } @@ -140,17 +141,18 @@ Uint32 JA_UpdateCallback(void *userdata, SDL_TimerID timerID, Uint32 interval) return 30; } -void JA_Init(const int freq, const SDL_AudioFormat format, const int channels) +void JA_Init(const int freq, const SDL_AudioFormat format, const int num_channels) { #ifdef DEBUG SDL_SetLogPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG); #endif SDL_Log("Iniciant JailAudio..."); - JA_audioSpec = {format, channels, freq }; + JA_audioSpec = {format, num_channels, freq }; if (!sdlAudioDevice) SDL_CloseAudioDevice(sdlAudioDevice); sdlAudioDevice = SDL_OpenAudioDevice(SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, &JA_audioSpec); SDL_Log( (sdlAudioDevice==0) ? "Failed to initialize SDL audio!\n" : "OK!\n"); + for (int i=0;i