[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