summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/abstract3drenderer.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-12 09:53:52 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-12 10:31:27 +0300
commit7f8966b035c9fd73d2cde04521c92892feefc0f9 (patch)
tree55fee47c70805ff6bd4df1a8cd7693ea34132b27 /src/datavisualization/engine/abstract3drenderer.cpp
parent1262c6562d7264c9fe4caf2f433615348c0f2ef8 (diff)
Fix Q3DScene caching
Task-number: QTRD-2258 Change-Id: Ifce23dca40566e75398e00975e8b2159b325739e Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com> Reviewed-by: Pasi Keränen <pasi.keranen@digia.com>
Diffstat (limited to 'src/datavisualization/engine/abstract3drenderer.cpp')
-rw-r--r--src/datavisualization/engine/abstract3drenderer.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp
index 7e5962cc..4a23a1a5 100644
--- a/src/datavisualization/engine/abstract3drenderer.cpp
+++ b/src/datavisualization/engine/abstract3drenderer.cpp
@@ -20,8 +20,9 @@
#include "q3dvalueaxis.h"
#include "texturehelper_p.h"
#include "utils_p.h"
-#include "q3dscene.h"
-#include "q3dcamera.h"
+#include "q3dscene_p.h"
+#include "q3dcamera_p.h"
+#include "q3dlight_p.h"
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
@@ -39,7 +40,7 @@ Abstract3DRenderer::Abstract3DRenderer(Abstract3DController *controller)
m_cachedSelectionMode(QDataVis::ModeNone),
m_cachedIsGridEnabled(false),
m_cachedIsBackgroundEnabled(false),
- m_cachedScene(0)
+ m_cachedScene(new Q3DScene())
#ifdef DISPLAY_RENDER_SPEED
, m_isFirstFrame(true),
m_numFrames(0)
@@ -47,6 +48,8 @@ Abstract3DRenderer::Abstract3DRenderer(Abstract3DController *controller)
{
QObject::connect(m_drawer, &Drawer::drawerChanged, this, &Abstract3DRenderer::updateTextures);
+ QObject::connect(this, &Abstract3DRenderer::needRender, m_controller,
+ &Abstract3DController::needRender, Qt::QueuedConnection);
}
Abstract3DRenderer::~Abstract3DRenderer()
@@ -150,10 +153,10 @@ void Abstract3DRenderer::updateTheme(Theme theme)
void Abstract3DRenderer::updateScene(Q3DScene *scene)
{
- // Make a copy of the scene to renderer's cache.
- Q3DScene *newScene = scene->clone();
- delete m_cachedScene;
- m_cachedScene = newScene;
+ // Synchronize the controller scene to that of the renderer, and vice versa.
+ // Controller scene had priority if both have changed same values.
+ scene->d_ptr->sync(*m_cachedScene->d_ptr);
+ m_cachedScene->d_ptr->sync(*scene->d_ptr);
}
void Abstract3DRenderer::handleShadowQualityChange()