diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/playback.c | 12 |
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 */ |