From 28e42188efb1544cf6b1433c244d590165ee6ebd Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 7 Apr 2014 14:26:32 +0300 Subject: Optimize multiple series rendering. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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ää --- tests/scattertest/main.cpp | 6 ++++++ tests/scattertest/scatterchart.cpp | 6 ++++++ tests/scattertest/scatterchart.h | 1 + 3 files changed, 13 insertions(+) (limited to 'tests/scattertest') diff --git a/tests/scattertest/main.cpp b/tests/scattertest/main.cpp index fbe257f5..2bd60aff 100644 --- a/tests/scattertest/main.cpp +++ b/tests/scattertest/main.cpp @@ -102,6 +102,9 @@ int main(int argc, char **argv) QPushButton *setSelectedItemButton = new QPushButton(widget); setSelectedItemButton->setText(QStringLiteral("Select/deselect item 3")); + QPushButton *clearSeriesDataButton = new QPushButton(widget); + clearSeriesDataButton->setText(QStringLiteral("Clear series data")); + QPushButton *addSeriesButton = new QPushButton(widget); addSeriesButton->setText(QStringLiteral("Add Series")); @@ -220,6 +223,7 @@ int main(int argc, char **argv) vLayout->addWidget(removeOneButton, 0, Qt::AlignTop); vLayout->addWidget(removeBunchButton, 0, Qt::AlignTop); vLayout->addWidget(setSelectedItemButton, 0, Qt::AlignTop); + vLayout->addWidget(clearSeriesDataButton, 0, Qt::AlignTop); vLayout->addWidget(addSeriesButton, 0, Qt::AlignTop); vLayout->addWidget(removeSeriesButton, 0, Qt::AlignTop); vLayout->addWidget(toggleSeriesVisibilityButton, 0, Qt::AlignTop); @@ -280,6 +284,8 @@ int main(int argc, char **argv) &ScatterDataModifier::removeBunch); QObject::connect(setSelectedItemButton, &QPushButton::clicked, modifier, &ScatterDataModifier::selectItem); + QObject::connect(clearSeriesDataButton, &QPushButton::clicked, modifier, + &ScatterDataModifier::clearSeriesData); QObject::connect(addSeriesButton, &QPushButton::clicked, modifier, &ScatterDataModifier::addSeries); QObject::connect(removeSeriesButton, &QPushButton::clicked, modifier, diff --git a/tests/scattertest/scatterchart.cpp b/tests/scattertest/scatterchart.cpp index a589919f..2e208926 100644 --- a/tests/scattertest/scatterchart.cpp +++ b/tests/scattertest/scatterchart.cpp @@ -459,6 +459,12 @@ void ScatterDataModifier::setGradient() } } +void ScatterDataModifier::clearSeriesData() +{ + if (m_targetSeries) + m_targetSeries->dataProxy()->resetArray(0); +} + void ScatterDataModifier::addSeries() { QScatter3DSeries *series = createAndAddSeries(); diff --git a/tests/scattertest/scatterchart.h b/tests/scattertest/scatterchart.h index 23071c85..1470f07b 100644 --- a/tests/scattertest/scatterchart.h +++ b/tests/scattertest/scatterchart.h @@ -71,6 +71,7 @@ public slots: void selectItem(); void handleSelectionChange(int index); void setGradient(); + void clearSeriesData(); void addSeries(); void removeSeries(); void toggleSeriesVisibility(); -- cgit v1.2.3