summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/data/surfaceitemmodelhandler.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-27 11:04:58 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-27 11:39:25 +0300
commitd4d99e49c147f4f61c0d5e84e59c023789fae17d (patch)
treeba01feecf4a818b95b5260d6419589c7b5536768 /src/datavisualization/data/surfaceitemmodelhandler.cpp
parent2d9dbd6bcb2c1a75f0a4230868854c495b2d530a (diff)
Allow resetting with existing array for bars and scatter
Improves performance when array dimensions do not change Task-number: QTRD-2335 Change-Id: I2733ff3552009a19cf285bc91426f595b64795dd Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/data/surfaceitemmodelhandler.cpp')
-rw-r--r--src/datavisualization/data/surfaceitemmodelhandler.cpp18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/datavisualization/data/surfaceitemmodelhandler.cpp b/src/datavisualization/data/surfaceitemmodelhandler.cpp
index d32b442b..a9882040 100644
--- a/src/datavisualization/data/surfaceitemmodelhandler.cpp
+++ b/src/datavisualization/data/surfaceitemmodelhandler.cpp
@@ -38,12 +38,14 @@ void SurfaceItemModelHandler::resolveModel()
QItemModelSurfaceDataMapping *mapping = static_cast<QItemModelSurfaceDataMapping *>(m_activeMapping);
if (m_itemModel.isNull() || !mapping) {
m_proxy->resetArray(0);
+ m_proxyArray = 0;
return;
}
if (!mapping->useModelCategories()
&& (mapping->rowRole().isEmpty() || mapping->columnRole().isEmpty())) {
m_proxy->resetArray(0);
+ m_proxyArray = 0;
return;
}
@@ -61,14 +63,12 @@ void SurfaceItemModelHandler::resolveModel()
if (mapping->useModelCategories()) {
// If dimensions have changed, recreate the array
- if (!m_proxyArray || columnCount != m_proxy->columnCount()
+ if (m_proxyArray != m_proxy->array() || columnCount != m_proxy->columnCount()
|| rowCount != m_proxyArray->size()) {
m_proxyArray = new QSurfaceDataArray;
m_proxyArray->reserve(rowCount);
- for (int i = 0; i < rowCount; i++) {
- QSurfaceDataRow *newProxyRow = new QSurfaceDataRow(columnCount);
- m_proxyArray->append(newProxyRow);
- }
+ for (int i = 0; i < rowCount; i++)
+ m_proxyArray->append(new QSurfaceDataRow(columnCount));
}
for (int i = 0; i < rowCount; i++) {
QSurfaceDataRow &newProxyRow = *m_proxyArray->at(i);
@@ -128,14 +128,12 @@ void SurfaceItemModelHandler::resolveModel()
columnList = mapping->columnCategories();
// If dimensions have changed, recreate the array
- if (!m_proxyArray || columnList.size() != m_proxy->columnCount()
+ if (m_proxyArray != m_proxy->array() || columnList.size() != m_proxy->columnCount()
|| rowList.size() != m_proxyArray->size()) {
m_proxyArray = new QSurfaceDataArray;
m_proxyArray->reserve(rowList.size());
- for (int i = 0; i < rowList.size(); i++) {
- QSurfaceDataRow *newProxyRow = new QSurfaceDataRow(columnList.size());
- m_proxyArray->append(newProxyRow);
- }
+ for (int i = 0; i < rowList.size(); i++)
+ m_proxyArray->append(new QSurfaceDataRow(columnList.size()));
}
// Create data array from itemValueMap
for (int i = 0; i < rowList.size(); i++) {