diff options
author | Miika Pekkarinen <miipekk@ihme.org> | 2005-11-21 11:14:51 +0000 |
---|---|---|
committer | Miika Pekkarinen <miipekk@ihme.org> | 2005-11-21 11:14:51 +0000 |
commit | d1704f689462393012715f6d0cd6ae0b153becf8 (patch) | |
tree | bf20555330530a95b7c6d753da316df4b68be381 /apps/playback.c | |
parent | 0fe9abbad1aa06378ad1ac1aed071861202f3e93 (diff) | |
download | rockbox-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.c | 7 |
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) { |