[vlc-commits] vout: don't drop window size when there is no display plugins yet

Thomas Guillem git at videolan.org
Mon Mar 30 09:55:45 CEST 2020


vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Thu Mar 26 16:19:43 2020 +0100| [634a910ae1336b3676e9cb1cc66d7b86f563738c] | committer: Thomas Guillem

vout: don't drop window size when there is no display plugins yet

This fixes the window size that was ignored when the size was updated from the
open callback of the window plugin.

Fixes #22674

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=634a910ae1336b3676e9cb1cc66d7b86f563738c
---

 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;
     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;
 



More information about the vlc-commits mailing list