summaryrefslogtreecommitdiffstats
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/mpeg.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index 221c403b49..933d02ce8a 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -777,9 +777,13 @@ void rec_tick(void)
void playback_tick(void)
{
struct trackdata *ptd = get_trackdata(0);
- ptd->id3.elapsed += (current_tick - last_dma_tick) * 1000 / HZ;
- last_dma_tick = current_tick;
- audio_dispatch_event(AUDIO_EVENT_POS_REPORT, (unsigned long)ptd->id3.elapsed);
+ if(ptd)
+ {
+ ptd->id3.elapsed += (current_tick - last_dma_tick) * 1000 / HZ;
+ last_dma_tick = current_tick;
+ audio_dispatch_event(AUDIO_EVENT_POS_REPORT,
+ (unsigned long)ptd->id3.elapsed);
+ }
}
static void reset_mp3_buffer(void)
@@ -849,7 +853,9 @@ static void transfer_end(unsigned char** ppbuf, int* psize)
*psize = last_dma_chunk_size & 0xffff;
*ppbuf = audiobuf + audiobuf_read;
- get_trackdata(0)->id3.offset += last_dma_chunk_size;
+ track = get_trackdata(0);
+ if(track)
+ track->id3.offset += last_dma_chunk_size;
/* Update the watermark debug level */
if(unplayed_space_left < lowest_watermark_level)