diff options
Diffstat (limited to 'src/plugins/platforms')
3 files changed, 23 insertions, 8 deletions
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsscreen.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsscreen.cpp index 60586f98a7..048f5433dc 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsscreen.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsscreen.cpp @@ -160,10 +160,10 @@ QSizeF QEglFSKmsScreen::physicalSize() const QDpi QEglFSKmsScreen::logicalDpi() const { - QSizeF ps = physicalSize(); - QSize s = geometry().size(); + const QSizeF ps = physicalSize(); + const QSize s = geometry().size(); - if (ps.isValid() && s.isValid()) + if (!ps.isEmpty() && !s.isEmpty()) return QDpi(25.4 * s.width() / ps.width(), 25.4 * s.height() / ps.height()); else diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp index 1ddcb3b862..f7450708ab 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp @@ -33,6 +33,7 @@ #include "qeglfskmsegldeviceintegration.h" #include <QLoggingCategory> +#include <private/qmath_p.h> QT_BEGIN_NAMESPACE @@ -115,7 +116,18 @@ EGLDisplay QEglFSKmsEglDeviceIntegration::createDisplay(EGLNativeDisplayType nat QSizeF QEglFSKmsEglDeviceIntegration::physicalScreenSize() const { - return QSizeF(m_drm_connector->mmWidth, m_drm_connector->mmHeight); + const int defaultPhysicalDpi = 100; + static const int width = qEnvironmentVariableIntValue("QT_QPA_EGLFS_PHYSICAL_WIDTH"); + static const int height = qEnvironmentVariableIntValue("QT_QPA_EGLFS_PHYSICAL_HEIGHT"); + QSizeF size(width, height); + if (size.isEmpty()) { + size = QSizeF(m_drm_connector->mmWidth, m_drm_connector->mmHeight); + if (size.isEmpty()) { + const float pixelsPerMm = Q_MM_PER_INCH / defaultPhysicalDpi; + size = QSizeF(screenSize().width() * pixelsPerMm, screenSize().height() * pixelsPerMm); + } + } + return size; } QSize QEglFSKmsEglDeviceIntegration::screenSize() const diff --git a/src/plugins/platforms/eglfs/qeglfsdeviceintegration.cpp b/src/plugins/platforms/eglfs/qeglfsdeviceintegration.cpp index 064b9f6306..8af48a893b 100644 --- a/src/plugins/platforms/eglfs/qeglfsdeviceintegration.cpp +++ b/src/plugins/platforms/eglfs/qeglfsdeviceintegration.cpp @@ -212,11 +212,14 @@ QSize QEGLDeviceIntegration::screenSize() const QDpi QEGLDeviceIntegration::logicalDpi() const { - QSizeF ps = physicalScreenSize(); - QSize s = screenSize(); + const QSizeF ps = physicalScreenSize(); + const QSize s = screenSize(); - return QDpi(25.4 * s.width() / ps.width(), - 25.4 * s.height() / ps.height()); + if (!ps.isEmpty() && !s.isEmpty()) + return QDpi(25.4 * s.width() / ps.width(), + 25.4 * s.height() / ps.height()); + else + return QDpi(100, 100); } qreal QEGLDeviceIntegration::pixelDensity() const |