vlc | branch: master | Benoît Noël du Payrat <[email protected]> | Mon May 9 16:49:22 2016 +0200| [e9878b8ba42b5dd5c3f66a401d1f017ccc131161] | committer: Jean-Baptiste Kempf
Qt: prevents the window from resizing to its current size Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e9878b8ba42b5dd5c3f66a401d1f017ccc131161 --- modules/gui/qt/components/interface_widgets.cpp | 10 ++++++++++ modules/gui/qt/main_interface.cpp | 18 ++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/modules/gui/qt/components/interface_widgets.cpp b/modules/gui/qt/components/interface_widgets.cpp index e4f1fc6..db590c5 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 8f91e9a..7c70692 100644 --- a/modules/gui/qt/main_interface.cpp +++ b/modules/gui/qt/main_interface.cpp @@ -215,11 +215,12 @@ 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 +778,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 ) _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
