summaryrefslogtreecommitdiffstats
path: root/src/platformsupport
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@digia.com>2014-01-24 10:32:08 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-01-24 15:20:18 +0100
commite02bda210539ec3f2fda266e7f707cbedd19f3ba (patch)
tree7679e5a5acd1b5e5e4297b0ad72ddc20154fd475 /src/platformsupport
parent0c01111a8086883c180d26240cdedd7342a3b7a4 (diff)
eglfs: Fix physical screen size regression for some hooks
On boards that provide their own custom ways of querying the screen size the resolution of widget apps became somewhat incorrect after the recent eglfs/eglconvenience refactor. This is because the physical size query helper was not able to access the screenSize() provided by the hooks, it was instead falling back to the default fb query which in turn returned the default screen size (e.g. 800x600). Change-Id: I46d487b61341d69dd9cb76d93198b1f44b64f195 Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Diffstat (limited to 'src/platformsupport')
-rw-r--r--src/platformsupport/eglconvenience/qeglconvenience.cpp6
-rw-r--r--src/platformsupport/eglconvenience/qeglconvenience_p.h2
2 files changed, 5 insertions, 3 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