Fix preview bug
This commit is contained in:
@@ -42,9 +42,11 @@ typedef struct {
|
|||||||
float mix[12];
|
float mix[12];
|
||||||
u8 buf_pos;
|
u8 buf_pos;
|
||||||
long data_read;
|
long data_read;
|
||||||
volatile bool stop;
|
|
||||||
char *filebuf;
|
char *filebuf;
|
||||||
u32 filesize;
|
u32 filesize;
|
||||||
|
|
||||||
|
volatile bool stop;
|
||||||
|
Handle finished;
|
||||||
} audio_s;
|
} audio_s;
|
||||||
|
|
||||||
void play_audio(audio_s *);
|
void play_audio(audio_s *);
|
||||||
|
|||||||
@@ -136,6 +136,11 @@ void free_lists(void)
|
|||||||
|
|
||||||
void exit_function(bool power_pressed)
|
void exit_function(bool power_pressed)
|
||||||
{
|
{
|
||||||
|
if (audio)
|
||||||
|
{
|
||||||
|
audio->stop = true;
|
||||||
|
svcWaitSynchronization(audio->finished, U64_MAX);
|
||||||
|
}
|
||||||
free_lists();
|
free_lists();
|
||||||
svcCloseHandle(update_icons_handle);
|
svcCloseHandle(update_icons_handle);
|
||||||
exit_screens();
|
exit_screens();
|
||||||
@@ -461,7 +466,11 @@ int main(void)
|
|||||||
{
|
{
|
||||||
preview_mode = false;
|
preview_mode = false;
|
||||||
if(current_mode == MODE_THEMES && audio)
|
if(current_mode == MODE_THEMES && audio)
|
||||||
|
{
|
||||||
audio->stop = true;
|
audio->stop = true;
|
||||||
|
svcWaitSynchronization(audio->finished, U64_MAX);
|
||||||
|
audio = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -469,7 +478,11 @@ int main(void)
|
|||||||
{
|
{
|
||||||
preview_mode = false;
|
preview_mode = false;
|
||||||
if(current_mode == MODE_THEMES && audio)
|
if(current_mode == MODE_THEMES && audio)
|
||||||
|
{
|
||||||
audio->stop = true;
|
audio->stop = true;
|
||||||
|
svcWaitSynchronization(audio->finished, U64_MAX);
|
||||||
|
audio = NULL;
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,8 @@
|
|||||||
// Play a given audio struct
|
// Play a given audio struct
|
||||||
Result update_audio(audio_s *audio)
|
Result update_audio(audio_s *audio)
|
||||||
{
|
{
|
||||||
|
svcCreateEvent(&audio->finished, RESET_STICKY);
|
||||||
|
|
||||||
long size = audio->wave_buf[audio->buf_pos].nsamples * 4 - audio->data_read;
|
long size = audio->wave_buf[audio->buf_pos].nsamples * 4 - audio->data_read;
|
||||||
char size_info[50] = {0};
|
char size_info[50] = {0};
|
||||||
sprintf(size_info, "Audio Size: %ld\n", size);
|
sprintf(size_info, "Audio Size: %ld\n", size);
|
||||||
@@ -70,6 +72,7 @@ void thread_audio(void* data) {
|
|||||||
while(!audio->stop) {
|
while(!audio->stop) {
|
||||||
update_audio(audio);
|
update_audio(audio);
|
||||||
}
|
}
|
||||||
|
svcSignalEvent(audio->finished);
|
||||||
free(audio->filebuf);
|
free(audio->filebuf);
|
||||||
free(audio);
|
free(audio);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user