[vlc-commits] qt: Account for DPI scaling when resizing the video widget

Hugo Beauzée-Luyssen git at videolan.org
Wed Mar 15 17:30:57 CET 2017


vlc | branch: master | Hugo Beauzée-Luyssen <hugo at beauzee.fr> | Mon Mar 13 11:27:32 2017 +0100| [42d42d676ea7e515c0cc308038c305efe7c63f89] | committer: Hugo Beauzée-Luyssen

qt: Account for DPI scaling when resizing the video widget

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

 modules/gui/qt/main_interface.cpp | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/modules/gui/qt/main_interface.cpp b/modules/gui/qt/main_interface.cpp
index f44a872..49a59b6 100644
--- a/modules/gui/qt/main_interface.cpp
+++ b/modules/gui/qt/main_interface.cpp
@@ -769,6 +769,7 @@ void MainInterface::releaseVideoSlot( void )
     stackCentralOldWidget = bgWidget;
 }
 
+// The provided size is in physical pixels, coming from the core.
 void MainInterface::setVideoSize( unsigned int w, unsigned int h )
 {
     if (!isFullScreen() && !isMaximized() )
@@ -782,7 +783,12 @@ void MainInterface::setVideoSize( unsigned int w, unsigned int h )
         if (b_autoresize)
         {
             QRect screen = QApplication::desktop()->availableGeometry();
-            if( h > screen.height() )
+#if HAS_QT56
+            float factor = videoWidget->devicePixelRatioF();
+#else
+            float factor = 1.0f;
+#endif
+            if( (float)h / factor > screen.height() )
             {
                 w = screen.width();
                 h = screen.height();
@@ -801,6 +807,13 @@ void MainInterface::setVideoSize( unsigned int w, unsigned int h )
                 h -= style()->pixelMetric(QStyle::PM_LayoutBottomMargin);
                 h -= 2 * style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
             }
+            else
+            {
+                // Convert the size in logical pixels
+                w = qRound( (float)w / factor );
+                h = qRound( (float)h / factor );
+                msg_Dbg( p_intf, "Logical video size: %ux%u", w, h );
+            }
             videoWidget->setSize( w, h );
         }
         else



More information about the vlc-commits mailing list