summaryrefslogtreecommitdiff
path: root/firmware/mpeg.c
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-06-26 12:05:06 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-06-26 12:05:06 +0000
commit200d226a7c49f42232eecba977ca0c840c4318cc (patch)
tree96abe2c71e1b00e4eb4c1e16066343564aa3965b /firmware/mpeg.c
parent28859c52d5bc3e47e7944700fcb80bb67f0ac81a (diff)
downloadrockbox-200d226a7c49f42232eecba977ca0c840c4318cc.tar.gz
rockbox-200d226a7c49f42232eecba977ca0c840c4318cc.zip
Fixed id3 array being updated too early
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1194 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/mpeg.c')
-rw-r--r--firmware/mpeg.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index c21997e701..fe71b3902b 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -281,15 +281,18 @@ void DEI3(void)
281 DTCR3 = last_dma_chunk_size & 0xffff; 281 DTCR3 = last_dma_chunk_size & 0xffff;
282 SAR3 = (unsigned int)mp3buf + mp3buf_read; 282 SAR3 = (unsigned int)mp3buf + mp3buf_read;
283 283
284 /* will we move across the track boundary? */ 284 /* several tracks loaded? */
285 if (( mp3buf_read <= id3tags[0].mempos ) && 285 if ( last_tag>1 ) {
286 ( (mp3buf_read + last_dma_chunk_size) > id3tags[0].mempos )) { 286 /* will we move across the track boundary? */
287 /* shift array so index 0 is current track */ 287 if (( mp3buf_read <= id3tags[1].mempos ) &&
288 int i; 288 ((mp3buf_read+last_dma_chunk_size) > id3tags[1].mempos )) {
289 for (i=0; i<last_tag-1; i++) 289 /* shift array so index 0 is current track */
290 id3tags[i] = id3tags[i+1]; 290 int i;
291 if ( last_tag ) 291 for (i=0; i<last_tag-1; i++)
292 id3tags[i] = id3tags[i+1];
292 last_tag--; 293 last_tag--;
294 DEBUGF("Track change\n");
295 }
293 } 296 }
294 } 297 }
295 else 298 else
@@ -379,11 +382,9 @@ static void mpeg_thread(void)
379 382
380 /* grab id3 tag of new file and 383 /* grab id3 tag of new file and
381 remember where in memory it starts */ 384 remember where in memory it starts */
382 if ( last_tag < MAX_ID3_TAGS ) { 385 mp3info(&(id3tags[0].id3), ev.data);
383 mp3info(&(id3tags[last_tag].id3), ev.data); 386 id3tags[0].mempos = mp3buf_write;
384 id3tags[last_tag].mempos = mp3buf_write; 387 last_tag=1;
385 last_tag++;
386 }
387 388
388 /* Make it read more data */ 389 /* Make it read more data */
389 filling = true; 390 filling = true;