[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