From 0b97f5553097f296e1de3ac88921dbba140ae0d5 Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Mon, 21 May 2012 11:49:54 +0100 Subject: 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 Reviewed-by: Giuseppe D'Angelo --- src/plugins/platforms/qnx/qqnxscreen.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/qnx/qqnxscreen.cpp b/src/plugins/platforms/qnx/qqnxscreen.cpp index 8bdc4974f1..e788ce94a2 100644 --- a/src/plugins/platforms/qnx/qqnxscreen.cpp +++ b/src/plugins/platforms/qnx/qqnxscreen.cpp @@ -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) -- cgit v1.2.3