diff options
author | Miika Pekkarinen <miipekk@ihme.org> | 2007-03-31 06:49:49 +0000 |
---|---|---|
committer | Miika Pekkarinen <miipekk@ihme.org> | 2007-03-31 06:49:49 +0000 |
commit | ce35f76a53f89216a3bbcb6c8049885c66bfbcce (patch) | |
tree | b0e48ea0db4f0e177649b67f951b386871e6888c | |
parent | 1088f695a26563a589db736dccc403f0cb284354 (diff) | |
download | rockbox-ce35f76a53f89216a3bbcb6c8049885c66bfbcce.tar.gz rockbox-ce35f76a53f89216a3bbcb6c8049885c66bfbcce.zip |
Don't update runtime info when stopping playback, except when playlist ends. Fixes wrong playcounts and autoscores being generated.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12976 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/playback.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/apps/playback.c b/apps/playback.c index be0d476ebd..3aacde09c3 100644 --- a/apps/playback.c +++ b/apps/playback.c | |||
@@ -2081,8 +2081,8 @@ static void codec_thread(void) | |||
2081 | 2081 | ||
2082 | if (!codec_load_next_track()) | 2082 | if (!codec_load_next_track()) |
2083 | { | 2083 | { |
2084 | // queue_post(&codec_queue, Q_AUDIO_STOP, 0); | ||
2085 | LOGFQUEUE("codec > audio Q_AUDIO_STOP"); | 2084 | LOGFQUEUE("codec > audio Q_AUDIO_STOP"); |
2085 | /* End of playlist */ | ||
2086 | queue_post(&audio_queue, Q_AUDIO_STOP, 0); | 2086 | queue_post(&audio_queue, Q_AUDIO_STOP, 0); |
2087 | break; | 2087 | break; |
2088 | } | 2088 | } |
@@ -2101,6 +2101,7 @@ static void codec_thread(void) | |||
2101 | sleep(1); | 2101 | sleep(1); |
2102 | } | 2102 | } |
2103 | LOGFQUEUE("codec > audio Q_AUDIO_STOP"); | 2103 | LOGFQUEUE("codec > audio Q_AUDIO_STOP"); |
2104 | /* End of playlist */ | ||
2104 | queue_post(&audio_queue, Q_AUDIO_STOP, 0); | 2105 | queue_post(&audio_queue, Q_AUDIO_STOP, 0); |
2105 | break; | 2106 | break; |
2106 | } | 2107 | } |
@@ -3296,11 +3297,17 @@ static void audio_stop_playback(void) | |||
3296 | playlist_update_resume_info( | 3297 | playlist_update_resume_info( |
3297 | (playlist_end && ci.stop_codec)?NULL:audio_current_track()); | 3298 | (playlist_end && ci.stop_codec)?NULL:audio_current_track()); |
3298 | 3299 | ||
3299 | /* inc index so runtime info is saved in audio_clear_track_entries() */ | 3300 | /* Increment index so runtime info is saved in audio_clear_track_entries(). |
3300 | /* done here, as audio_stop_playback() may be called more than once */ | 3301 | * Done here, as audio_stop_playback() may be called more than once. |
3301 | track_ridx++; | 3302 | * Don't update runtime unless playback is stopped because of end of playlist. |
3302 | track_ridx &= MAX_TRACK_MASK; | 3303 | * Updating runtime when manually stopping a tracks, can destroy autoscores |
3303 | 3304 | * and playcounts. | |
3305 | */ | ||
3306 | if (playlist_end) | ||
3307 | { | ||
3308 | track_ridx++; | ||
3309 | track_ridx &= MAX_TRACK_MASK; | ||
3310 | } | ||
3304 | } | 3311 | } |
3305 | 3312 | ||
3306 | filling = false; | 3313 | filling = false; |