summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/playback.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/apps/playback.c b/apps/playback.c
index 545076954f..b26754eb3a 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -695,12 +695,9 @@ void audio_play(long offset)
695void audio_stop(void) 695void audio_stop(void)
696{ 696{
697 /* Stop playback */ 697 /* Stop playback */
698 LOGFQUEUE("audio > audio Q_AUDIO_STOP"); 698 LOGFQUEUE("audio >| audio Q_AUDIO_STOP");
699 queue_post(&audio_queue, Q_AUDIO_STOP, 0);
700
701 /* Don't return until playback has actually stopped */ 699 /* Don't return until playback has actually stopped */
702 while(playing || !queue_empty(&audio_queue)) 700 queue_send(&audio_queue, Q_AUDIO_STOP, 0);
703 yield();
704} 701}
705 702
706void audio_pause(void) 703void audio_pause(void)
@@ -3644,7 +3641,8 @@ static void audio_thread(void)
3644 3641
3645 case Q_AUDIO_STOP: 3642 case Q_AUDIO_STOP:
3646 LOGFQUEUE("audio < Q_AUDIO_STOP"); 3643 LOGFQUEUE("audio < Q_AUDIO_STOP");
3647 audio_stop_playback(); 3644 if (playing)
3645 audio_stop_playback();
3648 if (ev.data != 0) 3646 if (ev.data != 0)
3649 queue_clear(&audio_queue); 3647 queue_clear(&audio_queue);
3650 break ; 3648 break ;