summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKeränen Pasi <pasi.keranen@digia.com>2013-10-08 14:53:59 +0300
committerPasi Keränen <pasi.keranen@digia.com>2013-10-09 09:01:55 +0300
commit36e42a1988e5c88c76c06415a1aaa19209a6e720 (patch)
treea55fdd66ad21df6bbc2816416bbd4a6bc92de2de /src
parentfcb1451758099bfd5c256d12af536dafde1d33dc (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.cpp2
-rw-r--r--src/datavisualization/engine/q3dscene.cpp21
-rw-r--r--src/datavisualization/engine/q3dscene.h3
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;