summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2018-01-11 19:44:36 -0500
committerFranklin Wei <git@fwei.tk>2018-01-11 19:45:31 -0500
commitccd612345cb8bb6f28fe1258f2d98e90de63967d (patch)
treedd892ad21c0418055bfc9a916dabee1e9ebb741c
parent0d794c0c06570decf030fae7e42993bc53c5ab57 (diff)
downloadrockbox-ccd612345cb8bb6f28fe1258f2d98e90de63967d.tar.gz
rockbox-ccd612345cb8bb6f28fe1258f2d98e90de63967d.zip
sdl: fix freeze on startup on PP targets
Using the coprocessor was a good idea in theory, but didn't actually work. This moves all SDL threads to the main core, which isn't ideal, but at least works. Additionally, this also adds some good-practice stuff such as setting the default sample rate on exit. Change-Id: If1636b33d439000ec7c4e50f46e8d002708d3121
-rw-r--r--apps/plugins/sdl/SDL_mixer/mixer.c3
-rw-r--r--apps/plugins/sdl/src/audio/rockbox/SDL_rockboxaudio.c1
-rw-r--r--apps/plugins/sdl/src/thread/rockbox/SDL_systhread.c2
3 files changed, 4 insertions, 2 deletions
diff --git a/apps/plugins/sdl/SDL_mixer/mixer.c b/apps/plugins/sdl/SDL_mixer/mixer.c
index a24a0e7c1d..32c6c8449f 100644
--- a/apps/plugins/sdl/SDL_mixer/mixer.c
+++ b/apps/plugins/sdl/SDL_mixer/mixer.c
@@ -412,7 +412,8 @@ int Mix_OpenAudio(int frequency, Uint16 format, int nchannels, int chunksize)
412 return(0); 412 return(0);
413 } 413 }
414 while ( audio_opened ) { 414 while ( audio_opened ) {
415 Mix_CloseAudio(); 415 Mix_CloseAudio();
416 rb->yield();
416 } 417 }
417 } 418 }
418 419
diff --git a/apps/plugins/sdl/src/audio/rockbox/SDL_rockboxaudio.c b/apps/plugins/sdl/src/audio/rockbox/SDL_rockboxaudio.c
index 2df820bee5..05b6c55853 100644
--- a/apps/plugins/sdl/src/audio/rockbox/SDL_rockboxaudio.c
+++ b/apps/plugins/sdl/src/audio/rockbox/SDL_rockboxaudio.c
@@ -222,6 +222,7 @@ static void ROCKBOXAUD_CloseAudio(_THIS)
222 SDL_FreeAudioMem(this->hidden->rb_buf[i]); 222 SDL_FreeAudioMem(this->hidden->rb_buf[i]);
223 } 223 }
224 rb->pcm_play_stop(); 224 rb->pcm_play_stop();
225 rb->pcm_set_frequency(HW_SAMPR_DEFAULT);
225} 226}
226 227
227static int ROCKBOXAUD_OpenAudio(_THIS, SDL_AudioSpec *spec) 228static int ROCKBOXAUD_OpenAudio(_THIS, SDL_AudioSpec *spec)
diff --git a/apps/plugins/sdl/src/thread/rockbox/SDL_systhread.c b/apps/plugins/sdl/src/thread/rockbox/SDL_systhread.c
index 214cbe4597..f9dc877815 100644
--- a/apps/plugins/sdl/src/thread/rockbox/SDL_systhread.c
+++ b/apps/plugins/sdl/src/thread/rockbox/SDL_systhread.c
@@ -58,7 +58,7 @@ int SDL_SYS_CreateThread(SDL_Thread *thread, void *args)
58 thread->handle = rb->create_thread(rbsdl_runthread, stacks[threadnum], DEFAULT_STACK_SIZE, 58 thread->handle = rb->create_thread(rbsdl_runthread, stacks[threadnum], DEFAULT_STACK_SIZE,
59 0, names[threadnum] /* collisions allowed? */ 59 0, names[threadnum] /* collisions allowed? */
60 IF_PRIO(, PRIORITY_USER_INTERFACE) 60 IF_PRIO(, PRIORITY_USER_INTERFACE)
61 IF_COP(, COP)); 61 IF_COP(, CPU));
62 62
63 threadnum++; 63 threadnum++;
64 64