summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/platformsupport/eglconvenience/qeglconvenience.cpp6
-rw-r--r--src/platformsupport/eglconvenience/qeglconvenience_p.h2
-rw-r--r--src/plugins/platforms/eglfs/qeglfshooks_stub.cpp2
3 files changed, 6 insertions, 4 deletions
diff --git a/src/platformsupport/eglconvenience/qeglconvenience.cpp b/src/platformsupport/eglconvenience/qeglconvenience.cpp
index f8ccff9b56..f51e471560 100644
--- a/src/platformsupport/eglconvenience/qeglconvenience.cpp
+++ b/src/platformsupport/eglconvenience/qeglconvenience.cpp
@@ -435,7 +435,7 @@ void q_printEglConfig(EGLDisplay display, EGLConfig config)
#if (defined(Q_OS_UNIX) && !defined(Q_OS_QNX))
-QSizeF q_physicalScreenSizeFromFb(int framebufferDevice)
+QSizeF q_physicalScreenSizeFromFb(int framebufferDevice, const QSize &screenSize)
{
const int defaultPhysicalDpi = 100;
static QSizeF size;
@@ -465,7 +465,9 @@ QSizeF q_physicalScreenSizeFromFb(int framebufferDevice)
screenResolution = QSize(vinfo.xres, vinfo.yres);
}
} else {
- screenResolution = q_screenSizeFromFb(framebufferDevice);
+ // Use the provided screen size, when available, since some platforms may have their own
+ // specific way to query it. Otherwise try querying it from the framebuffer.
+ screenResolution = screenSize.isEmpty() ? q_screenSizeFromFb(framebufferDevice) : screenSize;
}
size.setWidth(w <= 0 ? screenResolution.width() * Q_MM_PER_INCH / defaultPhysicalDpi : qreal(w));
diff --git a/src/platformsupport/eglconvenience/qeglconvenience_p.h b/src/platformsupport/eglconvenience/qeglconvenience_p.h
index d4ac669906..8616275e53 100644
--- a/src/platformsupport/eglconvenience/qeglconvenience_p.h
+++ b/src/platformsupport/eglconvenience/qeglconvenience_p.h
@@ -57,7 +57,7 @@ bool q_hasEglExtension(EGLDisplay display,const char* extensionName);
void q_printEglConfig(EGLDisplay display, EGLConfig config);
#ifdef Q_OS_UNIX
-QSizeF q_physicalScreenSizeFromFb(int framebufferDevice);
+QSizeF q_physicalScreenSizeFromFb(int framebufferDevice, const QSize &screenSize = QSize());
QSize q_screenSizeFromFb(int framebufferDevice);
int q_screenDepthFromFb(int framebufferDevice);
#endif
diff --git a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp
index b81d260ecb..dbfd8d99dc 100644
--- a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp
+++ b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp
@@ -100,7 +100,7 @@ EGLNativeDisplayType QEglFSHooks::platformDisplay() const
QSizeF QEglFSHooks::physicalScreenSize() const
{
- return q_physicalScreenSizeFromFb(framebuffer);
+ return q_physicalScreenSizeFromFb(framebuffer, screenSize());
}
QSize QEglFSHooks::screenSize() const