diff options
author | Keränen Pasi <pasi.keranen@digia.com> | 2013-10-08 14:53:59 +0300 |
---|---|---|
committer | Pasi Keränen <pasi.keranen@digia.com> | 2013-10-09 09:01:55 +0300 |
commit | 36e42a1988e5c88c76c06415a1aaa19209a6e720 (patch) | |
tree | a55fdd66ad21df6bbc2816416bbd4a6bc92de2de /src | |
parent | fcb1451758099bfd5c256d12af536dafde1d33dc (diff) |
Fixing the camera preset change not re-rendering bug.
Change-Id: Ie993f08b8e24910c1a956936a4c4bfa63b99c87f
Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/datavisualization/engine/abstract3dcontroller.cpp | 2 | ||||
-rw-r--r-- | src/datavisualization/engine/q3dscene.cpp | 21 | ||||
-rw-r--r-- | src/datavisualization/engine/q3dscene.h | 3 |
3 files changed, 26 insertions, 0 deletions
diff --git a/src/datavisualization/engine/abstract3dcontroller.cpp b/src/datavisualization/engine/abstract3dcontroller.cpp index e4286465..bfdc375e 100644 --- a/src/datavisualization/engine/abstract3dcontroller.cpp +++ b/src/datavisualization/engine/abstract3dcontroller.cpp @@ -64,6 +64,8 @@ Abstract3DController::Abstract3DController(QRect boundRect, QObject *parent) : setActiveInputHandler(inputHandler); connect(inputHandler, &QAbstract3DInputHandler::inputStateChanged, this, &Abstract3DController::emitNeedRender); + connect(m_scene, &Q3DScene::needRender, this, + &Abstract3DController::emitNeedRender); } Abstract3DController::~Abstract3DController() diff --git a/src/datavisualization/engine/q3dscene.cpp b/src/datavisualization/engine/q3dscene.cpp index b607dc4a..9d60cf05 100644 --- a/src/datavisualization/engine/q3dscene.cpp +++ b/src/datavisualization/engine/q3dscene.cpp @@ -217,12 +217,33 @@ void Q3DScene::setActiveCamera(Q3DCamera *camera) camera->setParent(this); if (camera != d_ptr->m_camera) { + if (d_ptr->m_camera) { + disconnect(d_ptr->m_camera, &Q3DCamera::xRotationChanged, this, + &Q3DScene::emitNeedRender); + disconnect(d_ptr->m_camera, &Q3DCamera::yRotationChanged, this, + &Q3DScene::emitNeedRender); + } + d_ptr->m_camera = camera; d_ptr->m_changeTracker.cameraChanged = true; + + if (camera) { + connect(camera, &Q3DCamera::xRotationChanged, this, + &Q3DScene::emitNeedRender); + connect(camera, &Q3DCamera::yRotationChanged, this, + &Q3DScene::emitNeedRender); + } + emit activeCameraChanged(camera); + emitNeedRender(); } } +void Q3DScene::emitNeedRender() +{ + emit needRender(); +} + /*! * \property Q3DScene::activeLight * diff --git a/src/datavisualization/engine/q3dscene.h b/src/datavisualization/engine/q3dscene.h index 66a5aa64..745cef72 100644 --- a/src/datavisualization/engine/q3dscene.h +++ b/src/datavisualization/engine/q3dscene.h @@ -72,6 +72,8 @@ public: void setLightPositionRelativeToCamera(const QVector3D &relativePosition, qreal fixedRotation = 0.0, qreal distanceModifier = 0.0); +private: + void emitNeedRender(); signals: void viewportChanged(QRect viewport); @@ -81,6 +83,7 @@ signals: void activeCameraChanged(const Q3DCamera *camera); void activeLightChanged(const Q3DLight *light); void devicePixelRatioChanged(qreal pixelRatio); + void needRender(); private: QScopedPointer<Q3DScenePrivate> d_ptr; |