From e02bda210539ec3f2fda266e7f707cbedd19f3ba Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Fri, 24 Jan 2014 10:32:08 +0100 Subject: 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 --- src/platformsupport/eglconvenience/qeglconvenience.cpp | 6 ++++-- src/platformsupport/eglconvenience/qeglconvenience_p.h | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'src/platformsupport') 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 -- cgit v1.2.3