QNX: Take orientation into account when reporting physical size

Previously landscape orientation was assumed in the QQnxScreen ctor. We
now calculate the initial physical dimensions correctly.

Change-Id: I6c434eaba1f931c769f343671fb80052287b51e5
Reviewed-by: Kevin Ottens <kevin.ottens.qnx@kdab.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
bb10
Sean Harmer 2012-05-21 11:49:54 +01:00 committed by Qt by Nokia
parent 9be17aa468
commit 0b97f55530
1 changed files with 8 additions and 3 deletions

View File

@ -82,14 +82,19 @@ QQnxScreen::QQnxScreen(screen_context_t screenContext, screen_display_t display,
m_currentGeometry = m_initialGeometry = QRect(0, 0, val[0], val[1]);
// Cache size of this display in millimeters
// Cache size of this display in millimeters. We have to take care of the orientation.
// libscreen always reports the physical size dimensions as width and height in the
// landscape orientation. Contrary to this, QPlatformScreen::physicalSize() expects the
// returned dimensions to follow the current orientation.
errno = 0;
result = screen_get_display_property_iv(m_display, SCREEN_PROPERTY_PHYSICAL_SIZE, val);
if (result != 0) {
qFatal("QQnxScreen: failed to query display physical size, errno=%d", errno);
}
m_currentPhysicalSize = m_initialPhysicalSize = QSize(val[0], val[1]);
if (m_currentRotation == 0 || m_currentRotation == 180)
m_currentPhysicalSize = m_initialPhysicalSize = QSize(val[0], val[1]);
else
m_currentPhysicalSize = m_initialPhysicalSize = QSize(val[1], val[0]);
// We only create the root window if we are the primary display.
if (primaryScreen)