summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/playback.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/apps/playback.c b/apps/playback.c
index 9e95c4fb00..ddb6019537 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -2166,6 +2166,13 @@ static bool audio_read_file(size_t minimum)
2166 else 2166 else
2167 overlap = RINGBUF_ADD_CROSS(buf_widx,rc,CUR_TI->buf_idx); 2167 overlap = RINGBUF_ADD_CROSS(buf_widx,rc,CUR_TI->buf_idx);
2168 2168
2169 if ((unsigned)rc > tracks[track_widx].filerem)
2170 {
2171 logf("Bad: rc-filerem=%d, fixing", rc-tracks[track_widx].filerem);
2172 tracks[track_widx].filesize += rc - tracks[track_widx].filerem;
2173 tracks[track_widx].filerem = rc;
2174 }
2175
2169 /* Advance buffer */ 2176 /* Advance buffer */
2170 buf_widx = RINGBUF_ADD(buf_widx, rc); 2177 buf_widx = RINGBUF_ADD(buf_widx, rc);
2171 tracks[track_widx].available += rc; 2178 tracks[track_widx].available += rc;
@@ -2883,9 +2890,12 @@ static void audio_rebuffer_and_seek(size_t newpos)
2883 filling = false; 2890 filling = false;
2884 audio_initialize_buffer_fill(true); 2891 audio_initialize_buffer_fill(true);
2885 2892
2893 /* This may have been tweaked by the id3v1 code */
2894 CUR_TI->filesize=filesize(fd);
2886 if (newpos > conf_preseek) 2895 if (newpos > conf_preseek)
2887 { 2896 {
2888 CUR_TI->start_pos = newpos - conf_preseek; 2897 CUR_TI->start_pos = newpos - conf_preseek;
2898 lseek(current_fd, CUR_TI->start_pos, SEEK_SET);
2889 CUR_TI->filerem = CUR_TI->filesize - CUR_TI->start_pos; 2899 CUR_TI->filerem = CUR_TI->filesize - CUR_TI->start_pos;
2890 real_preseek = conf_preseek; 2900 real_preseek = conf_preseek;
2891 } 2901 }
@@ -2898,8 +2908,6 @@ static void audio_rebuffer_and_seek(size_t newpos)
2898 2908
2899 CUR_TI->available = 0; 2909 CUR_TI->available = 0;
2900 2910
2901 lseek(current_fd, CUR_TI->start_pos, SEEK_SET);
2902
2903 audio_read_file(real_preseek); 2911 audio_read_file(real_preseek);
2904 2912
2905 /* Account for the data we just read that is 'behind' us now */ 2913 /* Account for the data we just read that is 'behind' us now */