vlc/vlc-2.1 | branch: master | Felix Paul Kühne <[email protected]> | Thu Dec 26 17:43:09 2013 +0100| [1dc61230f5121044b1605f3b35bbd047f0e3e751] | committer: Jean-Baptiste Kempf
auhal: prevent assertion failure on TPCircularBufferClear (close #10109) (cherry picked from commit 264f837c23f4fa58df49f457ba52c00b255fe155) Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.1.git/?a=commit;h=1dc61230f5121044b1605f3b35bbd047f0e3e751 --- modules/audio_output/auhal.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/modules/audio_output/auhal.c b/modules/audio_output/auhal.c index f2d3643..c421fe6 100644 --- a/modules/audio_output/auhal.c +++ b/modules/audio_output/auhal.c @@ -1379,20 +1379,22 @@ static void Flush(audio_output_t *p_aout, bool wait) { 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) { - int32_t availableBytes; - vlc_mutex_lock(&p_sys->lock); - TPCircularBufferTail(&p_sys->circular_buffer, &availableBytes); while (availableBytes > 0) { vlc_cond_wait(&p_sys->cond, &p_sys->lock); TPCircularBufferTail(&p_sys->circular_buffer, &availableBytes); } - vlc_mutex_unlock(&p_sys->lock); - } else { - /* flush circular buffer */ - TPCircularBufferClear(&p_aout->sys->circular_buffer); + /* flush circular buffer if data is left */ + 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) _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
