summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-07-18 15:37:41 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-07-18 15:37:41 +0000
commitf952ba7548772b91bacb9dc44fd740739745e67d (patch)
tree05d0ed361e0b5878d78eb9a0f1582dbc273f57a8
parent60e7b20971ec10b5444fd43f32b88b91e40a3c22 (diff)
downloadrockbox-f952ba7548772b91bacb9dc44fd740739745e67d.zip
rockbox-f952ba7548772b91bacb9dc44fd740739745e67d.tar.gz
rockbox-f952ba7548772b91bacb9dc44fd740739745e67d.tar.bz2
rockbox-f952ba7548772b91bacb9dc44fd740739745e67d.tar.xz
Ignore nonexisting files in playlists
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1384 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/mpeg.c52
1 files changed, 30 insertions, 22 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index fae6f5a..eb065d5 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -35,7 +35,12 @@
#endif
#define MPEG_CHUNKSIZE 0x20000
+#ifdef ARCHOS_RECORDER
+/* recorder is slower and needs more load time */
+#define MPEG_LOW_WATER 0x40000
+#else
#define MPEG_LOW_WATER 0x30000
+#endif
#define MPEG_PLAY 1
#define MPEG_STOP 2
@@ -450,25 +455,28 @@ static int new_file(bool next_track)
{
char *trackname;
- trackname = peek_next_track( next_track ? 1 : -1 );
- if ( !trackname )
- return -1;
-
- DEBUGF("playing %s\n", trackname);
-
- /* grab id3 tag of new file and remember where in memory it starts */
- if ( last_tag < MAX_ID3_TAGS ) {
- mp3info(&(id3tags[last_tag].id3), trackname);
- id3tags[last_tag].mempos = mp3buf_write;
- last_tag++;
- }
+ do {
+ trackname = peek_next_track( next_track ? 1 : -1 );
+ if ( !trackname )
+ return -1;
+
+ DEBUGF("playing %s\n", trackname);
+
+ mpeg_file = open(trackname, O_RDONLY);
+ if(mpeg_file < 0) {
+ DEBUGF("Couldn't open file: %s\n",trackname);
+ }
+ else {
+ /* grab id3 tag of new file and remember where
+ in memory it starts */
+ if ( last_tag < MAX_ID3_TAGS ) {
+ mp3info(&(id3tags[last_tag].id3), trackname);
+ id3tags[last_tag].mempos = mp3buf_write;
+ last_tag++;
+ }
+ }
+ } while ( mpeg_file < 0 );
- mpeg_file = open(trackname, O_RDONLY);
- if(mpeg_file < 0)
- {
- debugf("Couldn't open file\n");
- return -1;
- }
return 0;
}
@@ -513,10 +521,10 @@ static void mpeg_thread(void)
close(mpeg_file);
mpeg_file = open((char*)ev.data, O_RDONLY);
- if(mpeg_file < 0)
- {
- DEBUGF("Couldn't open %s\n",ev.data);
- break;
+ while (mpeg_file < 0) {
+ DEBUGF("Couldn't open file: %s\n",ev.data);
+ if ( new_file(true) == -1 )
+ return;
}
/* grab id3 tag of new file and