<html><head></head><body>Hi,<br><br>Draining from within the Play callback will cause a potentially long sleep. This will have a variety of undesirable side effects such as messing up the clock and blocking volume/mute/device controls.<br><br>I suspect that it might even make buffering fail completely depending on output configuration.<br><br>No thanks.<br><br><div class="gmail_quote">Le 30 janvier 2019 13:28:13 GMT+02:00, Thomas Guillem <thomas@gllm.fr> a écrit :<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class="k9mail">No sure if really needed, since there is only one audio codec module that pass<br>the discontinuity flag: the faad module.<br><br>On other cases, a flush will always predate a discontinuity and this code path<br>won't be triggered.<hr> modules/audio_output/pulse.c | 8 ++++++++<br> 1 file changed, 8 insertions(+)<br><br>diff --git a/modules/audio_output/pulse.c b/modules/audio_output/pulse.c<br>index 4ddc3ba7c8..21463628ab 100644<br>--- a/modules/audio_output/pulse.c<br>+++ b/modules/audio_output/pulse.c<br>@@ -527,6 +527,14 @@ static void Play(audio_output_t *aout, block_t *block, vlc_tick_t date)<br>      * will take place, and sooner or later a deadlock. */<br>     pa_threaded_mainloop_lock(sys->mainloop);<br> <br>+    if (unlikely(block->i_flags & BLOCK_FLAG_DISCONTINUITY<br>+              && sys->last_date != VLC_TICK_INVALID))<br>+    {<br>+        /* Discontinuity, so the next block is likely in the future, drain the<br>+         * stream and defer the next start. */<br>+        FlushLocked(aout, true);<br>+    }<br>+<br>     sys->last_date = date;<br> <br>     if (pa_stream_is_corked(s) > 0)</pre></blockquote></div><br>-- <br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.</body></html>