diff options
author | Miika Pekkarinen <miipekk@ihme.org> | 2005-10-30 08:27:34 +0000 |
---|---|---|
committer | Miika Pekkarinen <miipekk@ihme.org> | 2005-10-30 08:27:34 +0000 |
commit | 74528fc4a47d589794d4f40911995814a4f9daa7 (patch) | |
tree | 37006a6b61f3ec013a1b06ecdb9fce49851aa9a5 /apps | |
parent | 169c935c243782ba615de0b36947b45fa3259623 (diff) | |
download | rockbox-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.c | 4 |
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; |