summaryrefslogtreecommitdiff
path: root/apps/playback.c
diff options
context:
space:
mode:
authorMiika Pekkarinen <miipekk@ihme.org>2005-11-21 11:14:51 +0000
committerMiika Pekkarinen <miipekk@ihme.org>2005-11-21 11:14:51 +0000
commitd1704f689462393012715f6d0cd6ae0b153becf8 (patch)
treebf20555330530a95b7c6d753da316df4b68be381 /apps/playback.c
parent0fe9abbad1aa06378ad1ac1aed071861202f3e93 (diff)
downloadrockbox-d1704f689462393012715f6d0cd6ae0b153becf8.tar.gz
rockbox-d1704f689462393012715f6d0cd6ae0b153becf8.zip
Fixed playlist skipping of incorrect files and playback engine not to
hang if codec loading fails. Also displaying a "Loading..." message on resume and not calling queue_post too often. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8021 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/playback.c')
-rw-r--r--apps/playback.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/apps/playback.c b/apps/playback.c
index b662d0329b..1f0492544a 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -867,6 +867,7 @@ bool loadcodec(const char *trackname, bool start_play)
867 int prev_track; 867 int prev_track;
868 868
869 filetype = probe_file_format(trackname); 869 filetype = probe_file_format(trackname);
870
870 switch (filetype) { 871 switch (filetype) {
871 case AFMT_OGG_VORBIS: 872 case AFMT_OGG_VORBIS:
872 logf("Codec: Vorbis"); 873 logf("Codec: Vorbis");
@@ -915,12 +916,11 @@ bool loadcodec(const char *trackname, bool start_play)
915 snprintf(msgbuf, sizeof(msgbuf)-1, "No codec for: %s", trackname); 916 snprintf(msgbuf, sizeof(msgbuf)-1, "No codec for: %s", trackname);
916 gui_syncsplash(HZ*2, true, msgbuf); 917 gui_syncsplash(HZ*2, true, msgbuf);
917 codec_path = NULL; 918 codec_path = NULL;
919 return false;
918 } 920 }
919 921
920 tracks[track_widx].id3.codectype = filetype; 922 tracks[track_widx].id3.codectype = filetype;
921 tracks[track_widx].codecsize = 0; 923 tracks[track_widx].codecsize = 0;
922 if (codec_path == NULL)
923 return false;
924 924
925 if (!start_play) { 925 if (!start_play) {
926 prev_track = track_widx - 1; 926 prev_track = track_widx - 1;
@@ -1094,11 +1094,10 @@ bool audio_load_track(int offset, bool start_play, int peek_offset)
1094 tracks[track_widx].codecbuf = &filebuf[buf_widx]; 1094 tracks[track_widx].codecbuf = &filebuf[buf_widx];
1095 if (!loadcodec(trackname, start_play)) { 1095 if (!loadcodec(trackname, start_play)) {
1096 close(fd); 1096 close(fd);
1097 /* Stop buffer filling if codec load failed. */
1098 fill_bytesleft = 0;
1099 /* Set filesize to zero to indicate no file was loaded. */ 1097 /* Set filesize to zero to indicate no file was loaded. */
1100 tracks[track_widx].filesize = 0; 1098 tracks[track_widx].filesize = 0;
1101 tracks[track_widx].filerem = 0; 1099 tracks[track_widx].filerem = 0;
1100 tracks[track_widx].taginfo_ready = false;
1102 1101
1103 /* Try skipping to next track. */ 1102 /* Try skipping to next track. */
1104 if (fill_bytesleft > 0) { 1103 if (fill_bytesleft > 0) {