diff --git a/components/audio_mp3/audio_mp3.c b/components/audio_mp3/audio_mp3.c index e7f06636d579f6ba026b415df4e28a2da8a59d61..ae537bc0708e4d138a94593f9a10c65d6f6818d0 100644 --- a/components/audio_mp3/audio_mp3.c +++ b/components/audio_mp3/audio_mp3.c @@ -141,6 +141,16 @@ static void mp3_draw(st3m_media *media, Ctx *ctx) { static void mp3_think(st3m_media *media, float ms_elapsed) { mp3_state *self = (void *)media; + if (self->file && self->control.seek == 0) { + rewind(self->file); + self->offset = 0; + self->pos = 0; + self->control.time = 0; + self->control.position = 0; + self->control.seek = -1; + mp3dec_init(&self->mp3d); + } + mp3_fetch_data(self); self->scroll_pos += ms_elapsed / 1000.0;