QNX: Allow app to run when spurious 2nd screen is reported
authorSean Harmer <sean.harmer.qnx@kdab.com>
Thu, 16 Aug 2012 10:21:06 +0000 (11:21 +0100)
committerQt by Nokia <qt-info@nokia.com>
Fri, 17 Aug 2012 10:23:43 +0000 (12:23 +0200)
On the PlayBook, libscreen always seems to report the presence of a 2nd
display even when none is connected. This of course leads to the failure
to query this display for its physical size.

This patch relaxes the demand for a physical size to being for the
primary screen only.

Change-Id: If30b1fd704e7a194a426a0a9f0b85557478105f7
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
Reviewed-by: Frank Osterfeld <frank.osterfeld@kdab.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
src/plugins/platforms/qnx/qqnxscreen.cpp

index 91ee2d3..95b3ef0 100644 (file)
@@ -63,7 +63,7 @@
 
 QT_BEGIN_NAMESPACE
 
-static QSize determineScreenSize(screen_display_t display) {
+static QSize determineScreenSize(screen_display_t display, bool primaryScreen) {
     int val[2];
 
     errno = 0;
@@ -96,9 +96,9 @@ static QSize determineScreenSize(screen_display_t display) {
     const QSize defSize(QQNX_PHYSICAL_SCREEN_WIDTH, QQNX_PHYSICAL_SCREEN_HEIGHT);
     qWarning("QQnxScreen: QQNX_PHYSICAL_SCREEN_SIZE variable not set. Falling back to defines QQNX_PHYSICAL_SCREEN_WIDTH/QQNX_PHYSICAL_SCREEN_HEIGHT (%dx%d)", defSize.width(), defSize.height());
     return defSize;
-
 #else
-    qFatal("QQnxScreen: QQNX_PHYSICAL_SCREEN_SIZE variable not set. Could not determine physical screen size.");
+    if (primaryScreen)
+        qFatal("QQnxScreen: QQNX_PHYSICAL_SCREEN_SIZE variable not set. Could not determine physical screen size.");
     return QSize(150, 90);
 #endif
 }
@@ -136,7 +136,7 @@ QQnxScreen::QQnxScreen(screen_context_t screenContext, screen_display_t display,
     // libscreen always reports the physical size dimensions as width and height in the
     // native orientation. Contrary to this, QPlatformScreen::physicalSize() expects the
     // returned dimensions to follow the current orientation.
-    const QSize screenSize = determineScreenSize(m_display);
+    const QSize screenSize = determineScreenSize(m_display, primaryScreen);
 
     m_nativeOrientation = screenSize.width() >= screenSize.height() ? Qt::LandscapeOrientation : Qt::PortraitOrientation;