diff --git a/hairtunes.c b/hairtunes.c index 285cebad..063438ab 100644 --- a/hairtunes.c +++ b/hairtunes.c @@ -326,6 +326,7 @@ void ab_resync(void) { for (i=0; iready = 1; } - if (ab_buffering && buf_fill >= START_FILL) + if (ab_buffering && buf_fill >= START_FILL) { + ab_buffering = 0; pthread_cond_signal(&ab_buffer_ready); + } if (!ab_buffering) { // check if the t+10th packet has arrived... last-chance resend read = ab_read + 10; @@ -644,7 +647,7 @@ short *buffer_get_frame(void) { pthread_mutex_lock(&ab_mutex); buf_fill = ab_write - ab_read; - if (buf_fill < 1 || !ab_synced) { // init or underrun. stop and wait + if (buf_fill < 1 || !ab_synced || ab_buffering) { // init or underrun. stop and wait if (ab_synced) fprintf(stderr, "\nunderrun.\n");