summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/surfaceseriesrendercache.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-04-07 14:26:32 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2014-04-10 08:20:49 +0300
commit28e42188efb1544cf6b1433c244d590165ee6ebd (patch)
tree3cc0e1c717a1b21f21616dc87a08db6a9b36bada /src/datavisualization/engine/surfaceseriesrendercache.cpp
parent1b5d9a30adc0c9ca4f7929c375db008830586516 (diff)
Optimize multiple series rendering.
Cache all series instead of just the visible ones on all graphs instead of just surface. Changes to one series now trigger data update to only the affected series, which should significantly improve performance in these cases. Task-number: QTRD-2600 Task-number: QTRD-2957 Change-Id: I6db7c689108fce8d25aace6682a193936d6f0eaf Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/engine/surfaceseriesrendercache.cpp')
-rw-r--r--src/datavisualization/engine/surfaceseriesrendercache.cpp28
1 files changed, 13 insertions, 15 deletions
diff --git a/src/datavisualization/engine/surfaceseriesrendercache.cpp b/src/datavisualization/engine/surfaceseriesrendercache.cpp
index ad81f714..db3fa9f7 100644
--- a/src/datavisualization/engine/surfaceseriesrendercache.cpp
+++ b/src/datavisualization/engine/surfaceseriesrendercache.cpp
@@ -19,16 +19,18 @@
#include "seriesrendercache_p.h"
#include "surfaceseriesrendercache_p.h"
#include "objecthelper_p.h"
-#include "abstract3drenderer_p.h"
+#include "surface3drenderer_p.h"
#include "texturehelper_p.h"
#include "utils_p.h"
QT_BEGIN_NAMESPACE_DATAVISUALIZATION
-SurfaceSeriesRenderCache::SurfaceSeriesRenderCache(Surface3DRenderer *renderer)
- : m_surfaceVisible(false),
+SurfaceSeriesRenderCache::SurfaceSeriesRenderCache(QAbstract3DSeries *series,
+ Surface3DRenderer *renderer)
+ : SeriesRenderCache(series, renderer),
+ m_surfaceVisible(false),
m_surfaceGridVisible(false),
- m_surfaceFlatShading(true),
+ m_surfaceFlatShading(false),
m_surfaceObj(new SurfaceObject(renderer)),
m_sliceSurfaceObj(new SurfaceObject(renderer)),
m_sampleSpace(QRect(0, 0, 0 , 0)),
@@ -36,13 +38,11 @@ SurfaceSeriesRenderCache::SurfaceSeriesRenderCache(Surface3DRenderer *renderer)
m_selectionIdStart(0),
m_selectionIdEnd(0),
m_flatChangeAllowed(true),
- m_flatStatusDirty(false),
+ m_flatStatusDirty(true),
m_sliceSelectionPointer(0),
m_mainSelectionPointer(0),
m_slicePointerActive(false),
- m_mainPointerActive(false),
- m_valid(false),
- m_objectDirty(true)
+ m_mainPointerActive(false)
{
}
@@ -50,17 +50,15 @@ SurfaceSeriesRenderCache::~SurfaceSeriesRenderCache()
{
}
-void SurfaceSeriesRenderCache::populate(QSurface3DSeries *series, Abstract3DRenderer *renderer)
+void SurfaceSeriesRenderCache::populate(bool newSeries)
{
- Q_ASSERT(series);
+ SeriesRenderCache::populate(newSeries);
- SeriesRenderCache::populate(series, renderer);
-
- QSurface3DSeries::DrawFlags drawMode = series->drawMode();
+ QSurface3DSeries::DrawFlags drawMode = series()->drawMode();
m_surfaceVisible = drawMode.testFlag(QSurface3DSeries::DrawSurface);
m_surfaceGridVisible = drawMode.testFlag(QSurface3DSeries::DrawWireframe);
- if (m_flatChangeAllowed && m_surfaceFlatShading != series->isFlatShadingEnabled()) {
- m_surfaceFlatShading = series->isFlatShadingEnabled();
+ if (m_flatChangeAllowed && m_surfaceFlatShading != series()->isFlatShadingEnabled()) {
+ m_surfaceFlatShading = series()->isFlatShadingEnabled();
m_flatStatusDirty = true;
}
}