From d3d1b98d58e15116b7c383eeae076831b07f4442 Mon Sep 17 00:00:00 2001 From: Hardeep Sidhu Date: Thu, 19 Dec 2002 00:58:11 +0000 Subject: Don't signal track change until all id3 entries have been updated. Also, correctly set new write index after removing all tracks. Both changes fix potential resume bugs. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3024 a1c6a512-1295-4272-9138-f99709370657 --- firmware/mpeg.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/firmware/mpeg.c b/firmware/mpeg.c index fb27a3b904..914dd38319 100644 --- a/firmware/mpeg.c +++ b/firmware/mpeg.c @@ -292,6 +292,9 @@ static void remove_all_tags(void) for(i = 0;i < MAX_ID3_TAGS;i++) remove_current_tag(); + + tag_write_idx = tag_read_idx; + debug_tags(); } #endif @@ -1133,9 +1136,8 @@ static void track_change(void) #endif remove_current_tag(); - current_track_counter++; - update_playlist(); + current_track_counter++; } #ifdef DEBUG @@ -1323,8 +1325,8 @@ static void mpeg_thread(void) play_pending = true; paused = false; - current_track_counter++; update_playlist(); + current_track_counter++; break; case MPEG_STOP: @@ -1366,10 +1368,10 @@ static void mpeg_thread(void) if ( num_tracks_in_memory() > 1 ) { int unplayed_space_left, unswapped_space_left; - /* stop the current stream */ - play_pending = false; - playing = false; - stop_dma(); + /* stop the current stream */ + play_pending = false; + playing = false; + stop_dma(); track_change(); mp3buf_read = id3tags[tag_read_idx]->mempos; @@ -1423,8 +1425,8 @@ static void mpeg_thread(void) to start playing as soon as we have some data */ play_pending = true; - current_track_counter++; update_playlist(); + current_track_counter++; } } break; @@ -1458,8 +1460,8 @@ static void mpeg_thread(void) start playing as soon as we have some data */ play_pending = true; - current_track_counter++; update_playlist(); + current_track_counter++; } break; } @@ -2287,8 +2289,8 @@ void mpeg_next(void) continue; } index = playlist_next(steps); - current_track_counter++; taginfo.index = index; + current_track_counter++; is_playing = true; playing = true; break; @@ -2314,8 +2316,8 @@ void mpeg_prev(void) continue; } index = playlist_next(steps); - current_track_counter++; taginfo.index = index; + current_track_counter++; is_playing = true; playing = true; break; -- cgit v1.2.3