diff options
author | Keränen Pasi <pasi.keranen@digia.com> | 2013-12-17 16:25:57 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-12-18 09:02:08 +0200 |
commit | 96b8a5a65d0dcb0bc7ba6235bdbfadda68bc62c0 (patch) | |
tree | 5a299add525a069cc6a2616d352d6ee6bc165449 /src/datavisualization | |
parent | d0ce5b1a785bdb1e94dd8688b26e6a69c22f9f4f (diff) |
Fixes update on move to retina display on Mac OS X and Qt 5.2
Task-id: QTRD-2565
Change-Id: I4c6fdf0b595f44bc83c1f7fa3540ee311a74e17e
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization')
-rw-r--r-- | src/datavisualization/engine/abstract3drenderer.cpp | 19 | ||||
-rw-r--r-- | src/datavisualization/engine/abstract3drenderer_p.h | 1 |
2 files changed, 13 insertions, 7 deletions
diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp index ec2b1ecd..74088b7c 100644 --- a/src/datavisualization/engine/abstract3drenderer.cpp +++ b/src/datavisualization/engine/abstract3drenderer.cpp @@ -42,7 +42,8 @@ Abstract3DRenderer::Abstract3DRenderer(Abstract3DController *controller) m_textureHelper(0), m_cachedScene(new Q3DScene()), m_selectionDirty(true), - m_selectionState(SelectNone) + m_selectionState(SelectNone), + m_devicePixelRatio(1.0f) #ifdef DISPLAY_RENDER_SPEED , m_isFirstFrame(true), m_numFrames(0) @@ -166,11 +167,6 @@ void Abstract3DRenderer::updateTheme(Q3DTheme *theme) void Abstract3DRenderer::updateScene(Q3DScene *scene) { - float devicePixelRatio = scene->devicePixelRatio(); - QPoint logicalPixelPosition = scene->selectionQueryPosition(); - updateInputPosition(QPoint(logicalPixelPosition.x() * devicePixelRatio, - logicalPixelPosition.y() * devicePixelRatio)); - m_viewport = scene->d_ptr->glViewport(); m_secondarySubViewport = scene->d_ptr->glSecondarySubViewport(); @@ -180,10 +176,19 @@ void Abstract3DRenderer::updateScene(Q3DScene *scene) handleResize(); } + if (m_devicePixelRatio != scene->devicePixelRatio()) { + m_devicePixelRatio = scene->devicePixelRatio(); + handleResize(); + } + scene->activeCamera()->d_ptr->updateViewMatrix(m_autoScaleAdjustment); - // Set light position (rotate light with m_cachedScene->activeCamera(), a bit above it (as set in defaultLightPos)) + // Set light position (rotate light with activeCamera, a bit above it (as set in defaultLightPos)) scene->setLightPositionRelativeToCamera(defaultLightPos); + QPoint logicalPixelPosition = scene->selectionQueryPosition(); + updateInputPosition(QPoint(logicalPixelPosition.x() * m_devicePixelRatio, + logicalPixelPosition.y() * m_devicePixelRatio)); + if (Q3DScene::invalidSelectionPoint() == logicalPixelPosition) { updateSelectionState(SelectNone); } else { diff --git a/src/datavisualization/engine/abstract3drenderer_p.h b/src/datavisualization/engine/abstract3drenderer_p.h index d888798e..17a55ac9 100644 --- a/src/datavisualization/engine/abstract3drenderer_p.h +++ b/src/datavisualization/engine/abstract3drenderer_p.h @@ -136,6 +136,7 @@ protected: QVector<SeriesRenderCache> m_visibleSeriesList; QRect m_primarySubViewport; QRect m_secondarySubViewport; + float m_devicePixelRatio; #ifdef DISPLAY_RENDER_SPEED bool m_isFirstFrame; |