From d2b83659ea660432454d3d7648b02bf008905a13 Mon Sep 17 00:00:00 2001 From: Alex Taber Date: Fri, 11 May 2018 07:42:05 -0400 Subject: [PATCH] Fix race condition with music not being done playing --- source/camera.c | 5 ++--- source/music.c | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/camera.c b/source/camera.c index f6fb9ba..ea4b78c 100644 --- a/source/camera.c +++ b/source/camera.c @@ -198,6 +198,7 @@ void update_qr(qr_data *data) if (!quirc_decode(&code, &scan_data)) { exit_qr(data); + data->finished_update = true; draw_install(INSTALL_DOWNLOAD); char * zip_buf = NULL; @@ -276,7 +277,6 @@ void update_qr(qr_data *data) free(filename); free(zip_buf); - data->finished_update = true; } } @@ -297,5 +297,4 @@ bool init_qr(void) while (!data->finished_update && !data->finished) update_qr(data); return (bool)data->success; -} - +} \ No newline at end of file diff --git a/source/music.c b/source/music.c index 278008a..07eb114 100644 --- a/source/music.c +++ b/source/music.c @@ -76,6 +76,7 @@ void thread_audio(void* data) { ov_clear(&audio->vf); linearFree(audio->wave_buf[0].data_vaddr); linearFree(audio->wave_buf[1].data_vaddr); + while (audio->wave_buf[0].status != NDSP_WBUF_DONE || audio->wave_buf[1].status != NDSP_WBUF_DONE) svcSleepThread(1e7); svcSignalEvent(audio->finished); free(audio); }