summaryrefslogtreecommitdiffstats
path: root/src/datavisualization
diff options
context:
space:
mode:
authorKeränen Pasi <pasi.keranen@digia.com>2013-12-17 16:25:57 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-12-18 09:02:08 +0200
commit96b8a5a65d0dcb0bc7ba6235bdbfadda68bc62c0 (patch)
tree5a299add525a069cc6a2616d352d6ee6bc165449 /src/datavisualization
parentd0ce5b1a785bdb1e94dd8688b26e6a69c22f9f4f (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.cpp19
-rw-r--r--src/datavisualization/engine/abstract3drenderer_p.h1
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;