From 40a392b00d8a4b812a61956509f7379ca1f396bc Mon Sep 17 00:00:00 2001 From: notaz Date: Fri, 5 Oct 2012 02:00:26 +0300 Subject: make sound reinitable this will be used for Caanoo overclocking workaround --- main.c | 2 +- sound.c | 11 +++++++++-- sound.h | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index 96e6bb6..36901e3 100644 --- a/main.c +++ b/main.c @@ -314,7 +314,7 @@ int main(int argc, char *argv[]) } init_main(); - init_sound(); + init_sound(1); init_input(); diff --git a/sound.c b/sound.c index 9b21e6c..5593bbe 100644 --- a/sound.c +++ b/sound.c @@ -734,12 +734,18 @@ void sound_exit() sound_exit_flag = 1; SDL_CondSignal(sound_cv); SDL_CloseAudio(); + SDL_Delay(200); + SDL_DestroyMutex(sound_mutex); + sound_mutex = NULL; + SDL_DestroyCond(sound_cv); + sound_cv = NULL; } -void init_sound() +void init_sound(int need_reset) { SDL_AudioSpec sound_settings; + sound_exit_flag = 0; #ifdef PSP_BUILD audio_buffer_size = (audio_buffer_size_number * 1024) + 3072; #else @@ -779,7 +785,8 @@ void init_sound() init_noise_table(noise_table15, 32767, 14); init_noise_table(noise_table7, 127, 6); - reset_sound(); + if (need_reset) + reset_sound(); SDL_PauseAudio(0); } diff --git a/sound.h b/sound.h index 58d823b..e432cef 100644 --- a/sound.h +++ b/sound.h @@ -124,7 +124,7 @@ void sound_timer_queue32(u32 channel, u32 value); void sound_timer(fixed8_24 frequency_step, u32 channel); void sound_reset_fifo(u32 channel); void update_gbc_sound(u32 cpu_ticks); -void init_sound(); +void init_sound(int need_reset); void sound_write_mem_savestate(file_tag_type savestate_file); void sound_read_savestate(file_tag_type savestate_file); -- cgit v1.2.3