[vlc-devel] [PATCH] qt: fix initial scale/size of video when autoresize gui is disabled

Jean-Baptiste Kempf jb at videolan.org
Sun Feb 28 20:03:48 CET 2016


What is the change compared to the previous patch?

On 28 Feb, Darrell Walisser wrote :
> ---
>  modules/gui/qt/components/interface_widgets.cpp | 10 ++++++++++
>  modules/gui/qt/main_interface.cpp               | 19 +++++++++++++++----
>  2 files changed, 25 insertions(+), 4 deletions(-)
> 
> diff --git a/modules/gui/qt/components/interface_widgets.cpp b/modules/gui/qt/components/interface_widgets.cpp
> index 920bf68..b6c37e5 100644
> --- a/modules/gui/qt/components/interface_widgets.cpp
> +++ b/modules/gui/qt/components/interface_widgets.cpp
> @@ -183,6 +183,16 @@ WId VideoWidget::request( struct vout_window_t *p_wnd, unsigned int *pi_width,
>     Parent has to care about resizing itself */
>  void VideoWidget::setSize( unsigned int w, unsigned int h )
>  {
> +    /* If the size changed, resizeEvent will be called, otherwise not,
> +     * in which case we need to tell the vout what the size actually is
> +     */
> +    if( (unsigned)size().width() == w && (unsigned)size().height() == h )
> +    {
> +         if( p_window != NULL )
> +            vout_window_ReportSize( p_window, w, h );
> +        return;
> +    }
> +
>      resize( w, h );
>      emit sizeChanged( w, h );
>      /* Work-around a bug?misconception? that would happen when vout core resize
> diff --git a/modules/gui/qt/main_interface.cpp b/modules/gui/qt/main_interface.cpp
> index 90f941c..08ab7c7 100644
> --- a/modules/gui/qt/main_interface.cpp
> +++ b/modules/gui/qt/main_interface.cpp
> @@ -215,11 +215,13 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
>      {
>          if( b_autoresize )
>          {
> -            CONNECT( this, askVideoToResize( unsigned int, unsigned int ),
> -                     this, setVideoSize( unsigned int, unsigned int ) );
>              CONNECT( videoWidget, sizeChanged( int, int ),
>                       this, videoSizeChanged( int,  int ) );
>          }
> +
> +        CONNECT( this, askVideoToResize( unsigned int, unsigned int ),
> +                 this, setVideoSize( unsigned int, unsigned int ) );
> +
>          CONNECT( this, askVideoSetFullScreen( bool ),
>                   this, setVideoFullScreen( bool ) );
>      }
> @@ -777,8 +779,17 @@ void MainInterface::releaseVideoSlot( void )
>  
>  void MainInterface::setVideoSize( unsigned int w, unsigned int h )
>  {
> -    if( !isFullScreen() && !isMaximized() )
> -        videoWidget->setSize( w, h );
> +    if (!isFullScreen() && !isMaximized() )
> +    {
> +        /* Resize video widget to video size, or keep it at the same
> +         * size. Call setSize() either way so that vout_window_ReportSize
> +         * will always get called.
> +         */
> +        if (b_autoresize)
> +            videoWidget->setSize( w, h );
> +        else
> +            videoWidget->setSize( videoWidget->width(), videoWidget->height() );
> +    }
>  }
>  
>  void MainInterface::videoSizeChanged( int w, int h )
> -- 
> 2.5.0
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel

-- 
With my kindest regards,

-- 
Jean-Baptiste Kempf
http://www.jbkempf.com/ - +33 672 704 734
Sent from my Electronic Device


More information about the vlc-devel mailing list