[vlc-devel] [PATCH 2/2] vout: don't drop window size when there is no display plugins yet

Rémi Denis-Courmont remi at remlab.net
Fri Mar 27 10:19:24 CET 2020


Le perjantaina 27. maaliskuuta 2020, 10.57.36 EET Thomas Guillem a écrit :
> This fixes the window size that was ignored when the size was updated from
> the open callback of the window plugin.
> 
> Fixes #22674
> ---
>  src/video_output/video_output.c  | 9 +++++++++
>  src/video_output/vout_internal.h | 2 ++
>  2 files changed, 11 insertions(+)
> 
> diff --git a/src/video_output/video_output.c
> b/src/video_output/video_output.c index 373c09f1dc..dffd93f4d2 100644
> --- a/src/video_output/video_output.c
> +++ b/src/video_output/video_output.c
> @@ -425,6 +425,10 @@ void vout_ChangeDisplaySize(vout_thread_t *vout,
> 
>      /* DO NOT call this outside the vout window callbacks */
>      vlc_mutex_lock(&sys->display_lock);
> +
> +    sys->window_width = width;
> +    sys->window_height = height;
> +
>      if (sys->display != NULL)
>          vout_display_SetSize(sys->display, width, height);
>      vlc_mutex_unlock(&sys->display_lock);
> @@ -1605,6 +1609,10 @@ static int vout_Start(vout_thread_t *vout,
> vlc_video_context *vctx, const vout_c vlc_mutex_lock(&sys->display_lock);
>      vlc_mutex_unlock(&sys->window_lock);
> 
> +    /* Setup the window size, protected by the display_lock */
> +    dcfg.window_props.width = sys->window_width;
> +    dcfg.window_props.height = sys->window_height;
> +
>      sys->display = vout_OpenWrapper(vout, sys->splitter_name, &dcfg, vctx);
> if (sys->display == NULL) {
>          vlc_mutex_unlock(&sys->display_lock);
> @@ -1938,6 +1946,7 @@ vout_thread_t *vout_Create(vlc_object_t *object)
>      vlc_mutex_init(&sys->display_lock);
> 
>      /* Window */
> +    sys->window_width = sys->window_height = 0;

Shouldn't this go into sys->display_cfg now?

>      sys->display_cfg.window = vout_display_window_New(vout);
>      if (sys->display_cfg.window == NULL) {
>          if (sys->spu)
> diff --git a/src/video_output/vout_internal.h
> b/src/video_output/vout_internal.h index fdc92bfa45..a3a84cd93f 100644
> --- a/src/video_output/vout_internal.h
> +++ b/src/video_output/vout_internal.h
> @@ -170,6 +170,8 @@ struct vout_thread_sys_t
> 
>      /* Video output window */
>      bool            window_enabled;
> +    unsigned        window_width; /* protected by display_lock */
> +    unsigned        window_height; /* protected by display_lock */
>      vlc_mutex_t     window_lock;
>      vlc_decoder_device *dec_device;


-- 
雷米‧德尼-库尔蒙
http://www.remlab.net/





More information about the vlc-devel mailing list