summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorMiika Pekkarinen <miipekk@ihme.org>2005-10-30 08:27:34 +0000
committerMiika Pekkarinen <miipekk@ihme.org>2005-10-30 08:27:34 +0000
commit74528fc4a47d589794d4f40911995814a4f9daa7 (patch)
tree37006a6b61f3ec013a1b06ecdb9fce49851aa9a5 /apps
parent169c935c243782ba615de0b36947b45fa3259623 (diff)
downloadrockbox-74528fc4a47d589794d4f40911995814a4f9daa7.tar.gz
rockbox-74528fc4a47d589794d4f40911995814a4f9daa7.zip
Added a missing mutex lock to the initial buffer filling code. That
fixes a problem with some FLAC files. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7686 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/playback.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/apps/playback.c b/apps/playback.c
index 99d58d8136..3c2180ebc9 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -1149,6 +1149,7 @@ bool audio_load_track(int offset, bool start_play, int peek_offset)
}
/* Do some initial file buffering. */
+ mutex_lock(&mutex_bufferfill);
i = tracks[track_widx].start_pos;
size = MIN(size, AUDIO_FILL_CYCLE);
while (i < size) {
@@ -1167,6 +1168,7 @@ bool audio_load_track(int offset, bool start_play, int peek_offset)
tracks[track_widx].filesize = 0;
tracks[track_widx].filerem = 0;
close(fd);
+ mutex_unlock(&mutex_bufferfill);
return false;
}
buf_widx += rc;
@@ -1178,6 +1180,7 @@ bool audio_load_track(int offset, bool start_play, int peek_offset)
filebufused += rc;
fill_bytesleft -= rc;
}
+ mutex_unlock(&mutex_bufferfill);
if (!start_play)
track_count++;
@@ -1228,6 +1231,7 @@ void audio_play_start(int offset)
fill_bytesleft = filebuflen;
filling = true;
last_peek_offset = -1;
+
if (audio_load_track(offset, true, 0)) {
if (track_buffer_callback) {
cur_ti->event_sent = true;