vlc | branch: master | Thomas Guillem <[email protected]> | 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;
 

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to