Commit 264f837c authored by Felix Paul Kühne's avatar Felix Paul Kühne

auhal: prevent assertion failure on TPCircularBufferClear (close #10109)

parent 4598d6ca
...@@ -1379,20 +1379,22 @@ static void Flush(audio_output_t *p_aout, bool wait) ...@@ -1379,20 +1379,22 @@ static void Flush(audio_output_t *p_aout, bool wait)
{ {
struct aout_sys_t *p_sys = p_aout->sys; struct aout_sys_t *p_sys = p_aout->sys;
int32_t availableBytes;
vlc_mutex_lock(&p_sys->lock);
TPCircularBufferTail(&p_sys->circular_buffer, &availableBytes);
if (wait) { if (wait) {
int32_t availableBytes;
vlc_mutex_lock(&p_sys->lock);
TPCircularBufferTail(&p_sys->circular_buffer, &availableBytes);
while (availableBytes > 0) { while (availableBytes > 0) {
vlc_cond_wait(&p_sys->cond, &p_sys->lock); vlc_cond_wait(&p_sys->cond, &p_sys->lock);
TPCircularBufferTail(&p_sys->circular_buffer, &availableBytes); TPCircularBufferTail(&p_sys->circular_buffer, &availableBytes);
} }
vlc_mutex_unlock(&p_sys->lock);
} else { } else {
/* flush circular buffer */ /* flush circular buffer if data is left */
TPCircularBufferClear(&p_aout->sys->circular_buffer); if (availableBytes > 0)
TPCircularBufferClear(&p_aout->sys->circular_buffer);
} }
vlc_mutex_unlock(&p_sys->lock);
} }
static int TimeGet(audio_output_t *p_aout, mtime_t *delay) static int TimeGet(audio_output_t *p_aout, mtime_t *delay)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment