[vlc-devel] [vlc-commits] vout: ignore the display configuration when stopping
Steve Lhomme
robux4 at ycbcr.xyz
Mon Jan 28 08:23:50 CET 2019
On 26/01/2019 19:51, Rémi Denis-Courmont wrote:
> vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Thu Jan 24 22:55:03 2019 +0200| [14fd28fc1c7f7987ddf46ca5226fa1864005d954] | committer: Rémi Denis-Courmont
>
> vout: ignore the display configuration when stopping
>
> Each parameter generally fell in one of three category:
> 1) parameter that could not change:
> - window,
> - alignement,
> - pixel aspect ratio;
> 2) parameter whose value was ignored:
> - window size;
> 3) parameter whose value was actually saved from the old display
> and restored to the new display:
> - fill flag,
> - zoom,
> - viewpoint.
>
> The last three are now correctly tracked in the vout configuration,
> so they no longer need to be retrieved from the display being stopped.
> (As a side benefit, the parameter can be tuned even if the vout is
> inactive.)
Nice !
> This addresses the FIXME from c75fafe4ec348154a6e07c324dbe62c1c23a7149.
>
>> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=14fd28fc1c7f7987ddf46ca5226fa1864005d954
> ---
>
> src/video_output/video_output.c | 30 +++++++++++-------------------
> 1 file changed, 11 insertions(+), 19 deletions(-)
>
> diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
> index 8a21d40983..b02fbbe89d 100644
> --- a/src/video_output/video_output.c
> +++ b/src/video_output/video_output.c
> @@ -1672,28 +1672,20 @@ static int ThreadReinit(vout_thread_t *vout,
>
> vout_display_cfg_t dcfg = { };
>
> - ThreadStop(vout, &dcfg);
> + ThreadStop(vout, NULL);
>
> vout_ReinitInterlacingSupport(vout);
>
> -#if defined(_WIN32) || defined(__OS2__)
> - if (!dcfg.is_fullscreen)
> -#endif
> - {
> - dcfg.display.width = 0;
> - dcfg.display.height = 0;
> - }
> -
> - /* FIXME current vout "variables" are not in sync here anymore
> - * and I am not sure what to do */
> - if (dcfg.display.sar.num <= 0 || dcfg.display.sar.den <= 0) {
> - dcfg.display.sar.num = 1;
> - dcfg.display.sar.den = 1;
> - }
> - if (dcfg.zoom.num == 0 || dcfg.zoom.den == 0) {
> - dcfg.zoom.num = 1;
> - dcfg.zoom.den = 1;
> - }
> + vlc_mutex_lock(&vout->p->window_lock);
> + dcfg = vout->p->display_cfg;
> + /* Any configuration change after unlocking will involve a control request
> + * that will be processed later. There may also be some pending control
> + * requests for configuration change already visible in display_cfg,
> + * leading to harmless albeit useless control request processing.
> + *
> + * TODO: display lock separate from window lock.
> + */
> + vlc_mutex_unlock(&vout->p->window_lock);
>
> video_format_Clean(&vout->p->original);
> vout->p->original = original;
>
> _______________________________________________
> vlc-commits mailing list
> vlc-commits at videolan.org
> https://mailman.videolan.org/listinfo/vlc-commits
More information about the vlc-devel
mailing list