vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sun Oct 2 23:38:31 2016 +0300| [67aa83dd1b6a136ce90c01bc5babd21fb8a24263] | committer: Rémi Denis-Courmont
prefetch: do not defer pause Do not wait for full buffers to pause the underlying stream. This improves responsiveness (upon resumption) for live streams. This also ensures that no I/O is done while the input thread is paused; some apps might reasonably expect such behaviour. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=67aa83dd1b6a136ce90c01bc5babd21fb8a24263 --- modules/stream_filter/prefetch.c | 33 +++++++++++---------------------- 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/modules/stream_filter/prefetch.c b/modules/stream_filter/prefetch.c index 38d7937..6832801 100644 --- a/modules/stream_filter/prefetch.c +++ b/modules/stream_filter/prefetch.c @@ -156,18 +156,17 @@ static void *Thread(void *data) mutex_cleanup_push(&sys->lock); for (;;) { - if (paused) - { - if (sys->paused) - { /* Wait for resumption */ - vlc_cond_wait(&sys->wait_space, &sys->lock); - continue; - } + if (sys->paused != paused) + { /* Update pause state */ + msg_Dbg(stream, paused ? "resuming" : "pausing"); + paused = sys->paused; + ThreadControl(stream, STREAM_SET_PAUSE_STATE, paused); + continue; + } - /* Resume the underlying stream */ - msg_Dbg(stream, "resuming"); - ThreadControl(stream, STREAM_SET_PAUSE_STATE, false); - paused = false; + if (paused) + { /* Wait for resumption */ + vlc_cond_wait(&sys->wait_space, &sys->lock); continue; } @@ -205,17 +204,7 @@ static void *Thread(void *data) if (unused == 0) { /* Buffer is full */ if (history == 0) - { - if (sys->paused) - { /* Pause the stream once the buffer is full - * (and assuming pause was actually requested) */ - msg_Dbg(stream, "pausing"); - ThreadControl(stream, STREAM_SET_PAUSE_STATE, true); - paused = true; - continue; - } - - /* Wait for data to be read */ + { /* Wait for data to be read */ vlc_cond_wait(&sys->wait_space, &sys->lock); continue; } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
