diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/pcmbuf.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/apps/pcmbuf.c b/apps/pcmbuf.c index 2d61f238b6..41719d8efc 100644 --- a/apps/pcmbuf.c +++ b/apps/pcmbuf.c | |||
@@ -401,6 +401,8 @@ void pcmbuf_pause(bool pause) { | |||
401 | /* Force playback. */ | 401 | /* Force playback. */ |
402 | void pcmbuf_play_start(void) | 402 | void pcmbuf_play_start(void) |
403 | { | 403 | { |
404 | mutex_lock(&pcmbuf_mutex); | ||
405 | |||
404 | if (!pcm_is_playing() && pcmbuf_unplayed_bytes) | 406 | if (!pcm_is_playing() && pcmbuf_unplayed_bytes) |
405 | { | 407 | { |
406 | /** Prevent a very tiny pop from happening by muting audio | 408 | /** Prevent a very tiny pop from happening by muting audio |
@@ -415,6 +417,8 @@ void pcmbuf_play_start(void) | |||
415 | /* Now unmute the audio. */ | 417 | /* Now unmute the audio. */ |
416 | pcm_mute(false); | 418 | pcm_mute(false); |
417 | } | 419 | } |
420 | |||
421 | mutex_unlock(&pcmbuf_mutex); | ||
418 | } | 422 | } |
419 | 423 | ||
420 | /** | 424 | /** |
@@ -422,6 +426,8 @@ void pcmbuf_play_start(void) | |||
422 | */ | 426 | */ |
423 | static void pcmbuf_flush_fillpos(void) | 427 | static void pcmbuf_flush_fillpos(void) |
424 | { | 428 | { |
429 | mutex_lock(&pcmbuf_mutex); | ||
430 | |||
425 | if (audiobuffer_fillpos) { | 431 | if (audiobuffer_fillpos) { |
426 | /* Never use the last buffer descriptor */ | 432 | /* Never use the last buffer descriptor */ |
427 | while (pcmbuf_write == pcmbuf_write_end) { | 433 | while (pcmbuf_write == pcmbuf_write_end) { |
@@ -438,6 +444,8 @@ static void pcmbuf_flush_fillpos(void) | |||
438 | } | 444 | } |
439 | pcmbuf_add_chunk(); | 445 | pcmbuf_add_chunk(); |
440 | } | 446 | } |
447 | |||
448 | mutex_unlock(&pcmbuf_mutex); | ||
441 | } | 449 | } |
442 | 450 | ||
443 | /** | 451 | /** |