diff options
author | Laszlo Agocs <laszlo.agocs@digia.com> | 2014-01-24 10:32:08 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-24 15:20:18 +0100 |
commit | e02bda210539ec3f2fda266e7f707cbedd19f3ba (patch) | |
tree | 7679e5a5acd1b5e5e4297b0ad72ddc20154fd475 /src/platformsupport | |
parent | 0c01111a8086883c180d26240cdedd7342a3b7a4 (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.cpp | 6 | ||||
-rw-r--r-- | src/platformsupport/eglconvenience/qeglconvenience_p.h | 2 |
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 |