--- firmware\mpeg.1 Sun Aug 19 22:41:07 2007 +++ firmware\mpeg.c Sun Aug 19 15:45:59 2007 @@ -1027,10 +1027,17 @@ static void stop_playing(void) { + struct trackdata *track; + /* Stop the current stream */ mp3_play_stop(); playing = false; filling = false; + + track = get_trackdata(0); + if (track != NULL) + prev_track_elapsed = track->id3.elapsed; + if(mpeg_file >= 0) close(mpeg_file); mpeg_file = -1; @@ -1039,6 +1046,25 @@ reset_mp3_buffer(); } +static void end_current_track(void) { + struct trackdata *track; + + play_pending = false; + playing = false; + mp3_play_pause(false); + + track = get_trackdata(0); + if (track != NULL) + prev_track_elapsed = track->id3.elapsed; + + reset_mp3_buffer(); + remove_all_tags(); + generate_unbuffer_events(); + + if(mpeg_file >= 0) + close(mpeg_file); +} + /* Is this a really the end of playback or is a new playlist starting */ static void check_playlist_end(int direction) { @@ -1260,17 +1286,8 @@ #endif /* CONFIG_TUNER */ /* Stop the current stream */ - play_pending = false; - playing = false; paused = false; - mp3_play_pause(false); - - reset_mp3_buffer(); - remove_all_tags(); - generate_unbuffer_events(); - - if(mpeg_file >= 0) - close(mpeg_file); + end_current_track(); if ( new_file(0) == -1 ) { @@ -1390,17 +1407,7 @@ break; /* stop the current stream */ - play_pending = false; - playing = false; - mp3_play_pause(false); - - reset_mp3_buffer(); - remove_all_tags(); - generate_unbuffer_events(); - - /* Open the next file */ - if (mpeg_file >= 0) - close(mpeg_file); + end_current_track(); if (new_file(1) < 0) { DEBUGF("No more files to play\n"); @@ -1430,18 +1437,9 @@ break; /* stop the current stream */ - play_pending = false; - playing = false; - mp3_play_pause(false); - - reset_mp3_buffer(); - remove_all_tags(); - generate_unbuffer_events(); + end_current_track(); /* Open the next file */ - if (mpeg_file >= 0) - close(mpeg_file); - if (new_file(-1) < 0) { DEBUGF("No more files to play\n"); filling = false;