mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-13 07:02:31 -05:00
mpegplayer: Hopefully help some problems on dual core. Make USB mode exit correctly.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13109 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
7c4b786851
commit
dfa9f44034
2 changed files with 22 additions and 22 deletions
|
|
@ -65,6 +65,8 @@ bool mpeg_menu(void)
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
menu_quit=1;
|
menu_quit=1;
|
||||||
|
if (result == MENU_ATTACHED_USB)
|
||||||
|
result = 3;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -929,7 +929,6 @@ static inline int32_t clip_sample(int32_t sample)
|
||||||
return sample;
|
return sample;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void audio_thread(void) __attribute__((noreturn));
|
|
||||||
static void audio_thread(void)
|
static void audio_thread(void)
|
||||||
{
|
{
|
||||||
uint8_t *mpabuf = mpa_buffer;
|
uint8_t *mpabuf = mpa_buffer;
|
||||||
|
|
@ -1197,12 +1196,10 @@ done:
|
||||||
rb->sleep(HZ/4);
|
rb->sleep(HZ/4);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Don't really terminate but just signal that it's ok for this thread
|
pcm_playback_stop();
|
||||||
to be killed */
|
|
||||||
audiostatus = THREAD_TERMINATED;
|
|
||||||
|
|
||||||
while (1)
|
audiostatus = THREAD_TERMINATED;
|
||||||
rb->yield();
|
rb->remove_thread(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* End of libmad stuff */
|
/* End of libmad stuff */
|
||||||
|
|
@ -1744,20 +1741,21 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Stop the threads and wait for them to terminate */
|
/* Stop the threads and wait for them to terminate */
|
||||||
if (audiothread_id != NULL)
|
if (videostatus != THREAD_TERMINATED)
|
||||||
audiostatus = PLEASE_STOP;
|
{
|
||||||
|
|
||||||
if (videothread_id != NULL)
|
|
||||||
videostatus = PLEASE_STOP;
|
videostatus = PLEASE_STOP;
|
||||||
|
while (videostatus != THREAD_TERMINATED)
|
||||||
while (audiostatus != THREAD_TERMINATED ||
|
|
||||||
videostatus != THREAD_TERMINATED)
|
|
||||||
rb->yield();
|
rb->yield();
|
||||||
|
}
|
||||||
|
|
||||||
if (audiothread_id != NULL)
|
if (audiostatus != THREAD_TERMINATED)
|
||||||
rb->remove_thread(audiothread_id);
|
{
|
||||||
|
audiostatus = PLEASE_STOP;
|
||||||
|
while (audiostatus != THREAD_TERMINATED)
|
||||||
|
rb->yield();
|
||||||
|
}
|
||||||
|
|
||||||
pcm_playback_stop();
|
rb->sleep(HZ/10);
|
||||||
|
|
||||||
rb->lcd_clear_display();
|
rb->lcd_clear_display();
|
||||||
rb->lcd_update();
|
rb->lcd_update();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue