summaryrefslogtreecommitdiff
path: root/apps/playback.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/playback.c')
-rw-r--r--apps/playback.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/apps/playback.c b/apps/playback.c
index 029aefbddb..821b70523c 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -171,6 +171,10 @@ bool audiobuffer_insert(char *buf, size_t length)
171 return true; 171 return true;
172} 172}
173 173
174void audiobuffer_add_event(void (*event_handler)(void))
175{
176}
177
174unsigned int audiobuffer_get_latency() 178unsigned int audiobuffer_get_latency()
175{ 179{
176 return 0; 180 return 0;
@@ -416,6 +420,11 @@ void codec_configure_callback(int setting, void *value)
416 } 420 }
417} 421}
418 422
423void codec_track_changed(void)
424{
425 track_changed = true;
426}
427
419void yield_codecs(void) 428void yield_codecs(void)
420{ 429{
421 yield(); 430 yield();
@@ -603,6 +612,8 @@ bool audio_load_track(int offset, bool start_play, int peek_offset)
603 612
604 trackname = playlist_peek(peek_offset); 613 trackname = playlist_peek(peek_offset);
605 if (!trackname) { 614 if (!trackname) {
615 logf("End-of-playlist");
616 conf_watermark = 0;
606 return false; 617 return false;
607 } 618 }
608 619
@@ -668,7 +679,7 @@ bool audio_load_track(int offset, bool start_play, int peek_offset)
668 679
669 if (start_play) { 680 if (start_play) {
670 track_count++; 681 track_count++;
671 track_changed = true; 682 audiobuffer_add_event(codec_track_changed);
672 } 683 }
673 684
674 i = tracks[track_widx].start_pos; 685 i = tracks[track_widx].start_pos;
@@ -872,13 +883,15 @@ void audio_update_trackinfo(void)
872 ci.mp3data = (struct mp3info *)&cur_ti->mp3data; 883 ci.mp3data = (struct mp3info *)&cur_ti->mp3data;
873 ci.curpos = 0; 884 ci.curpos = 0;
874 ci.taginfo_ready = (bool *)&cur_ti->taginfo_ready; 885 ci.taginfo_ready = (bool *)&cur_ti->taginfo_ready;
875 track_changed = true; 886 audiobuffer_add_event(codec_track_changed);
876} 887}
877 888
878void audio_change_track(void) 889void audio_change_track(void)
879{ 890{
880 if (track_ridx == track_widx) { 891 if (track_ridx == track_widx) {
881 logf("No more tracks"); 892 logf("No more tracks");
893 while (pcm_is_playing())
894 yield();
882 playing = false; 895 playing = false;
883 return ; 896 return ;
884 } 897 }