summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2002-05-29 12:25:21 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2002-05-29 12:25:21 +0000
commit3a25aa4fd4a9f2798982fc562ce12e2dffce668e (patch)
tree055adfb78a5c3965d3ce379df9c4173ef080dc23 /firmware
parent3ad66b95fb2623e9d38cd7454ef7e7b492b6d6e9 (diff)
downloadrockbox-3a25aa4fd4a9f2798982fc562ce12e2dffce668e.tar.gz
rockbox-3a25aa4fd4a9f2798982fc562ce12e2dffce668e.zip
Even better end-of-song handling. It might even work now...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@790 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/mpeg.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index dae0ef4d41..48da48177f 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -243,6 +243,7 @@ void DEI3(void)
243 243
244 if(!filling && unplayed_space_left < MPEG_LOW_WATER) 244 if(!filling && unplayed_space_left < MPEG_LOW_WATER)
245 { 245 {
246 filling = true;
246 queue_post(&mpeg_queue, MPEG_NEED_DATA, 0); 247 queue_post(&mpeg_queue, MPEG_NEED_DATA, 0);
247 } 248 }
248 249
@@ -354,7 +355,7 @@ static void mpeg_thread(void)
354 read too large chunks because the bitswapping will take 355 read too large chunks because the bitswapping will take
355 too much time. We must keep the DMA happy and also give 356 too much time. We must keep the DMA happy and also give
356 the other threads a chance to run. */ 357 the other threads a chance to run. */
357 if(filling) 358 if(mpeg_file >= 0)
358 { 359 {
359 DEBUGF("R\n"); 360 DEBUGF("R\n");
360 len = read(mpeg_file, mp3buf+mp3buf_write, amount_to_read); 361 len = read(mpeg_file, mp3buf+mp3buf_write, amount_to_read);
@@ -387,6 +388,7 @@ static void mpeg_thread(void)
387 else 388 else
388 { 389 {
389 close(mpeg_file); 390 close(mpeg_file);
391 mpeg_file = -1;
390 392
391 /* Make sure that the write pointer is at a word 393 /* Make sure that the write pointer is at a word
392 boundary */ 394 boundary */
@@ -542,7 +544,7 @@ void mpeg_init(void)
542 rc = mas_run(1); 544 rc = mas_run(1);
543 if (rc < 0) 545 if (rc < 0)
544 panicf("Error - mas_run(1) returned %d\n", rc); 546 panicf("Error - mas_run(1) returned %d\n", rc);
545 547
546 queue_init(&mpeg_queue); 548 queue_init(&mpeg_queue);
547 create_thread(mpeg_thread, mpeg_stack, sizeof(mpeg_stack)); 549 create_thread(mpeg_thread, mpeg_stack, sizeof(mpeg_stack));
548 mas_poll_start(2); 550 mas_poll_start(2);