[vlc-devel] [PATCH] video_output: wait half the extra time we have without getting the display_lock
Thomas Guillem
thomas at gllm.fr
Fri Feb 19 13:07:00 UTC 2021
You should put the commit log as a comment.
Maybe max_time_to_render / 2 is too big ? Why not (max_time_to_render - max_time_to_render / 10) for example?
On Fri, Feb 19, 2021, at 12:16, Steve Lhomme wrote:
> Since f1bf7ce5b4480a3d38d54c7ae1d1564f0670d83f we start the rendering much
> earlier than before, so we have more time to do things if necessary.
>
> The problem is that for almost all the duration of the call display_lock is
> held. So it's blocking all other UI related events from being handled. Even if
> we are going to spend most of the time waiting until we can do the display.
>
> This patch waits a bit before locking the display_lock when we estimate we will
> have so extra time before doing the display/swap.
>
> Fixes #25479
> ---
> src/video_output/video_output.c | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/src/video_output/video_output.c
> b/src/video_output/video_output.c
> index d04d3f4d111..c176c274334 100644
> --- a/src/video_output/video_output.c
> +++ b/src/video_output/video_output.c
> @@ -1119,6 +1119,23 @@ static int
> ThreadDisplayRenderPicture(vout_thread_sys_t *vout, bool render_now)
> if (filtered->date != sys->displayed.current->date)
> msg_Warn(&vout->obj, "Unsupported timestamp modifications done
> by chain_interactive");
>
> + if (!render_now)
> + {
> + vlc_tick_t now = vlc_tick_now();
> + vlc_tick_t system_pts = vlc_clock_ConvertToSystem(sys->clock,
> now, filtered->date, sys->rate);
> + if (unlikely(system_pts != INT64_MAX))
> + {
> + const vlc_tick_t late = now - system_pts;
> + if (unlikely(late <= 0))
> + {
> + // wait half the extra time we have without the
> display_lock
> + vlc_tick_t max_time_to_render = sys->render.avg;
> + vlc_clock_Wait(sys->clock, now , filtered->date -
> max_time_to_render / 2, sys->rate,
> + VOUT_REDISPLAY_DELAY);
> + }
> + }
> + }
> +
> vout_display_t *vd = sys->display;
>
> vlc_mutex_lock(&sys->display_lock);
> --
> 2.29.2
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
More information about the vlc-devel
mailing list