summaryrefslogtreecommitdiffstats
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
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
-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)
if(!filling && unplayed_space_left < MPEG_LOW_WATER)
{
+ filling = true;
queue_post(&mpeg_queue, MPEG_NEED_DATA, 0);
}
@@ -354,7 +355,7 @@ static void mpeg_thread(void)
read too large chunks because the bitswapping will take
too much time. We must keep the DMA happy and also give
the other threads a chance to run. */
- if(filling)
+ if(mpeg_file >= 0)
{
DEBUGF("R\n");
len = read(mpeg_file, mp3buf+mp3buf_write, amount_to_read);
@@ -387,6 +388,7 @@ static void mpeg_thread(void)
else
{
close(mpeg_file);
+ mpeg_file = -1;
/* Make sure that the write pointer is at a word
boundary */
@@ -542,7 +544,7 @@ void mpeg_init(void)
rc = mas_run(1);
if (rc < 0)
panicf("Error - mas_run(1) returned %d\n", rc);
-
+
queue_init(&mpeg_queue);
create_thread(mpeg_thread, mpeg_stack, sizeof(mpeg_stack));
mas_poll_start(2);