summaryrefslogtreecommitdiff
path: root/apps/playback.c
diff options
context:
space:
mode:
authorBrandon Low <lostlogic@rockbox.org>2006-10-23 12:44:11 +0000
committerBrandon Low <lostlogic@rockbox.org>2006-10-23 12:44:11 +0000
commit500a761cb042ffd23a808c7d62d17809d3f1e543 (patch)
treefc97e3e968ece9594c27e5fab71d8e17c25d9b43 /apps/playback.c
parent4a4c67f660ffd5ab3aeada45562a09afb880a4f3 (diff)
downloadrockbox-500a761cb042ffd23a808c7d62d17809d3f1e543.tar.gz
rockbox-500a761cb042ffd23a808c7d62d17809d3f1e543.zip
Last fix was wrong, I did the math this time, should fix more buffering edges
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11315 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/playback.c')
-rw-r--r--apps/playback.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/apps/playback.c b/apps/playback.c
index a74eee1dbd..9e95c4fb00 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -2154,30 +2154,30 @@ static bool audio_read_file(size_t minimum)
2154 break; 2154 break;
2155 } 2155 }
2156 2156
2157 tracks[track_widx].available += rc;
2158 tracks[track_widx].filerem -= rc;
2159
2160 /* How much of the playing track did we overwrite */ 2157 /* How much of the playing track did we overwrite */
2161 if (buf_widx == CUR_TI->buf_idx) 2158 if (buf_widx == CUR_TI->buf_idx)
2162 { 2159 {
2163 /* Special handling; zero or full overlap? */ 2160 /* Special handling; zero or full overlap? */
2164 if (CUR_TI->filerem) 2161 if (track_widx == track_ridx && CUR_TI->available == 0)
2165 overlap = rc; 2162 overlap = 0;
2166 else 2163 else
2167 overlap=0; 2164 overlap = rc;
2168 } 2165 }
2169 else 2166 else
2170 overlap = RINGBUF_ADD_CROSS(buf_widx,rc,CUR_TI->buf_idx); 2167 overlap = RINGBUF_ADD_CROSS(buf_widx,rc,CUR_TI->buf_idx);
2171 2168
2172 /* Advance buffer */ 2169 /* Advance buffer */
2173 buf_widx = RINGBUF_ADD(buf_widx, rc); 2170 buf_widx = RINGBUF_ADD(buf_widx, rc);
2171 tracks[track_widx].available += rc;
2172 tracks[track_widx].filerem -= rc;
2174 2173
2175 /* If we write into the playing track, adjust it's buffer info */ 2174 /* If we write into the playing track, adjust it's buffer info */
2176 if (overlap > 0 && CUR_TI->available != 0) { 2175 if (overlap > 0)
2176 {
2177 CUR_TI->buf_idx += overlap; 2177 CUR_TI->buf_idx += overlap;
2178 CUR_TI->start_pos += overlap; 2178 CUR_TI->start_pos += overlap;
2179 } 2179 }
2180 2180
2181 /* For a rebuffer, fill at least this minimum */ 2181 /* For a rebuffer, fill at least this minimum */
2182 if (minimum > (unsigned)rc) 2182 if (minimum > (unsigned)rc)
2183 minimum -= rc; 2183 minimum -= rc;