forked from JailDoctor/JailAudio
- [FIX] Arreglada la pausa i continuació de música i só per a que siguen independents
- [FIX] Condicions de petada al stopar sons
This commit is contained in:
@@ -151,7 +151,7 @@ void JA_Init(const int freq, const SDL_AudioFormat format, const int channels)
|
|||||||
if (!sdlAudioDevice) SDL_CloseAudioDevice(sdlAudioDevice);
|
if (!sdlAudioDevice) SDL_CloseAudioDevice(sdlAudioDevice);
|
||||||
sdlAudioDevice = SDL_OpenAudioDevice(SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, &JA_audioSpec);
|
sdlAudioDevice = SDL_OpenAudioDevice(SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, &JA_audioSpec);
|
||||||
SDL_Log( (sdlAudioDevice==0) ? "Failed to initialize SDL audio!\n" : "OK!\n");
|
SDL_Log( (sdlAudioDevice==0) ? "Failed to initialize SDL audio!\n" : "OK!\n");
|
||||||
SDL_PauseAudioDevice(sdlAudioDevice);
|
//SDL_PauseAudioDevice(sdlAudioDevice);
|
||||||
JA_timerID = SDL_AddTimer(30, JA_UpdateCallback, nullptr);
|
JA_timerID = SDL_AddTimer(30, JA_UpdateCallback, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -216,7 +216,7 @@ void JA_PlayMusic(JA_Music_t *music, const int loop)
|
|||||||
if (!SDL_PutAudioStreamData(current_music->stream, current_music->buffer, current_music->length)) printf("[ERROR] SDL_PutAudioStreamData failed!\n");
|
if (!SDL_PutAudioStreamData(current_music->stream, current_music->buffer, current_music->length)) printf("[ERROR] SDL_PutAudioStreamData failed!\n");
|
||||||
SDL_SetAudioStreamGain(current_music->stream, JA_musicVolume);
|
SDL_SetAudioStreamGain(current_music->stream, JA_musicVolume);
|
||||||
if (!SDL_BindAudioStream(sdlAudioDevice, current_music->stream)) printf("[ERROR] SDL_BindAudioStream failed!\n");
|
if (!SDL_BindAudioStream(sdlAudioDevice, current_music->stream)) printf("[ERROR] SDL_BindAudioStream failed!\n");
|
||||||
SDL_ResumeAudioStreamDevice(current_music->stream);
|
//SDL_ResumeAudioStreamDevice(current_music->stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JA_PauseMusic()
|
void JA_PauseMusic()
|
||||||
@@ -225,7 +225,8 @@ void JA_PauseMusic()
|
|||||||
if (!current_music || current_music->state == JA_MUSIC_INVALID) return;
|
if (!current_music || current_music->state == JA_MUSIC_INVALID) return;
|
||||||
|
|
||||||
current_music->state = JA_MUSIC_PAUSED;
|
current_music->state = JA_MUSIC_PAUSED;
|
||||||
SDL_PauseAudioStreamDevice(current_music->stream);
|
//SDL_PauseAudioStreamDevice(current_music->stream);
|
||||||
|
SDL_UnbindAudioStream(current_music->stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JA_ResumeMusic()
|
void JA_ResumeMusic()
|
||||||
@@ -234,7 +235,8 @@ void JA_ResumeMusic()
|
|||||||
if (!current_music || current_music->state == JA_MUSIC_INVALID) return;
|
if (!current_music || current_music->state == JA_MUSIC_INVALID) return;
|
||||||
|
|
||||||
current_music->state = JA_MUSIC_PLAYING;
|
current_music->state = JA_MUSIC_PLAYING;
|
||||||
SDL_ResumeAudioStreamDevice(current_music->stream);
|
//SDL_ResumeAudioStreamDevice(current_music->stream);
|
||||||
|
SDL_BindAudioStream(sdlAudioDevice, current_music->stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JA_StopMusic()
|
void JA_StopMusic()
|
||||||
@@ -244,7 +246,7 @@ void JA_StopMusic()
|
|||||||
|
|
||||||
current_music->pos = 0;
|
current_music->pos = 0;
|
||||||
current_music->state = JA_MUSIC_STOPPED;
|
current_music->state = JA_MUSIC_STOPPED;
|
||||||
SDL_PauseAudioStreamDevice(current_music->stream);
|
//SDL_PauseAudioStreamDevice(current_music->stream);
|
||||||
SDL_DestroyAudioStream(current_music->stream);
|
SDL_DestroyAudioStream(current_music->stream);
|
||||||
current_music->stream = nullptr;
|
current_music->stream = nullptr;
|
||||||
}
|
}
|
||||||
@@ -389,7 +391,8 @@ void JA_PauseChannel(const int channel)
|
|||||||
if (channels[i].state == JA_CHANNEL_PLAYING)
|
if (channels[i].state == JA_CHANNEL_PLAYING)
|
||||||
{
|
{
|
||||||
channels[i].state = JA_CHANNEL_PAUSED;
|
channels[i].state = JA_CHANNEL_PAUSED;
|
||||||
SDL_PauseAudioStreamDevice(channels[i].stream);
|
//SDL_PauseAudioStreamDevice(channels[i].stream);
|
||||||
|
SDL_UnbindAudioStream(channels[i].stream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (channel >= 0 && channel < JA_MAX_SIMULTANEOUS_CHANNELS)
|
else if (channel >= 0 && channel < JA_MAX_SIMULTANEOUS_CHANNELS)
|
||||||
@@ -397,7 +400,8 @@ void JA_PauseChannel(const int channel)
|
|||||||
if (channels[channel].state == JA_CHANNEL_PLAYING)
|
if (channels[channel].state == JA_CHANNEL_PLAYING)
|
||||||
{
|
{
|
||||||
channels[channel].state = JA_CHANNEL_PAUSED;
|
channels[channel].state = JA_CHANNEL_PAUSED;
|
||||||
SDL_PauseAudioStreamDevice(channels[channel].stream);
|
//SDL_PauseAudioStreamDevice(channels[channel].stream);
|
||||||
|
SDL_UnbindAudioStream(channels[channel].stream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -412,7 +416,8 @@ void JA_ResumeChannel(const int channel)
|
|||||||
if (channels[i].state == JA_CHANNEL_PAUSED)
|
if (channels[i].state == JA_CHANNEL_PAUSED)
|
||||||
{
|
{
|
||||||
channels[i].state = JA_CHANNEL_PLAYING;
|
channels[i].state = JA_CHANNEL_PLAYING;
|
||||||
SDL_ResumeAudioStreamDevice(channels[i].stream);
|
//SDL_ResumeAudioStreamDevice(channels[i].stream);
|
||||||
|
SDL_BindAudioStream(sdlAudioDevice, channels[i].stream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (channel >= 0 && channel < JA_MAX_SIMULTANEOUS_CHANNELS)
|
else if (channel >= 0 && channel < JA_MAX_SIMULTANEOUS_CHANNELS)
|
||||||
@@ -420,7 +425,8 @@ void JA_ResumeChannel(const int channel)
|
|||||||
if (channels[channel].state == JA_CHANNEL_PAUSED)
|
if (channels[channel].state == JA_CHANNEL_PAUSED)
|
||||||
{
|
{
|
||||||
channels[channel].state = JA_CHANNEL_PLAYING;
|
channels[channel].state = JA_CHANNEL_PLAYING;
|
||||||
SDL_ResumeAudioStreamDevice(channels[channel].stream);
|
//SDL_ResumeAudioStreamDevice(channels[channel].stream);
|
||||||
|
SDL_BindAudioStream(sdlAudioDevice, channels[channel].stream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -433,6 +439,7 @@ void JA_StopChannel(const int channel)
|
|||||||
{
|
{
|
||||||
for (int i = 0; i < JA_MAX_SIMULTANEOUS_CHANNELS; i++) {
|
for (int i = 0; i < JA_MAX_SIMULTANEOUS_CHANNELS; i++) {
|
||||||
if (channels[i].state != JA_CHANNEL_FREE) SDL_DestroyAudioStream(channels[i].stream);
|
if (channels[i].state != JA_CHANNEL_FREE) SDL_DestroyAudioStream(channels[i].stream);
|
||||||
|
channels[channel].stream = nullptr;
|
||||||
channels[i].state = JA_CHANNEL_FREE;
|
channels[i].state = JA_CHANNEL_FREE;
|
||||||
channels[i].pos = 0;
|
channels[i].pos = 0;
|
||||||
channels[i].sound = NULL;
|
channels[i].sound = NULL;
|
||||||
@@ -441,6 +448,7 @@ void JA_StopChannel(const int channel)
|
|||||||
else if (channel >= 0 && channel < JA_MAX_SIMULTANEOUS_CHANNELS)
|
else if (channel >= 0 && channel < JA_MAX_SIMULTANEOUS_CHANNELS)
|
||||||
{
|
{
|
||||||
if (channels[channel].state != JA_CHANNEL_FREE) SDL_DestroyAudioStream(channels[channel].stream);
|
if (channels[channel].state != JA_CHANNEL_FREE) SDL_DestroyAudioStream(channels[channel].stream);
|
||||||
|
channels[channel].stream = nullptr;
|
||||||
channels[channel].state = JA_CHANNEL_FREE;
|
channels[channel].state = JA_CHANNEL_FREE;
|
||||||
channels[channel].pos = 0;
|
channels[channel].pos = 0;
|
||||||
channels[channel].sound = NULL;
|
channels[channel].sound = NULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user