summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/playback.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/apps/playback.c b/apps/playback.c
index be0d476..3aacde0 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -2081,8 +2081,8 @@ static void codec_thread(void)
if (!codec_load_next_track())
{
- // queue_post(&codec_queue, Q_AUDIO_STOP, 0);
LOGFQUEUE("codec > audio Q_AUDIO_STOP");
+ /* End of playlist */
queue_post(&audio_queue, Q_AUDIO_STOP, 0);
break;
}
@@ -2101,6 +2101,7 @@ static void codec_thread(void)
sleep(1);
}
LOGFQUEUE("codec > audio Q_AUDIO_STOP");
+ /* End of playlist */
queue_post(&audio_queue, Q_AUDIO_STOP, 0);
break;
}
@@ -3296,11 +3297,17 @@ static void audio_stop_playback(void)
playlist_update_resume_info(
(playlist_end && ci.stop_codec)?NULL:audio_current_track());
- /* inc index so runtime info is saved in audio_clear_track_entries() */
- /* done here, as audio_stop_playback() may be called more than once */
- track_ridx++;
- track_ridx &= MAX_TRACK_MASK;
-
+ /* Increment index so runtime info is saved in audio_clear_track_entries().
+ * Done here, as audio_stop_playback() may be called more than once.
+ * Don't update runtime unless playback is stopped because of end of playlist.
+ * Updating runtime when manually stopping a tracks, can destroy autoscores
+ * and playcounts.
+ */
+ if (playlist_end)
+ {
+ track_ridx++;
+ track_ridx &= MAX_TRACK_MASK;
+ }
}
filling = false;