summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeikkinen Miikka <miikka.heikkinen@digia.com>2013-09-20 12:51:17 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-20 12:56:27 +0300
commitd57aabe85e6b4012f93348884df16262889906d8 (patch)
tree4890063e229d89afbf5ba140068ecd4d656ccb58
parent0d74bd964a2f63c303cc03d83c1ae02991b8e0ec (diff)
Fixed Valgrind reported memory issues.
Change-Id: I9ccb460b5cceb969827ede510b3c05d07467358d Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
-rw-r--r--examples/barchart/main.cpp18
-rw-r--r--src/datavisualization/data/qsurfacedataproxy.cpp21
-rw-r--r--src/datavisualization/data/qsurfacedataproxy_p.h3
-rw-r--r--src/datavisualization/engine/bars3drenderer.cpp2
-rw-r--r--src/datavisualization/engine/q3dcamera.cpp2
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp5
6 files changed, 37 insertions, 14 deletions
diff --git a/examples/barchart/main.cpp b/examples/barchart/main.cpp
index d8bfa5b4..b71f9831 100644
--- a/examples/barchart/main.cpp
+++ b/examples/barchart/main.cpp
@@ -212,8 +212,8 @@ int main(int argc, char **argv)
{
QApplication app(argc, argv);
- QWidget *widget = new QWidget;
- QVBoxLayout *layout = new QVBoxLayout(widget);
+ QWidget widget;
+ QVBoxLayout *layout = new QVBoxLayout(&widget);
Q3DBars *chart = new Q3DBars();
QSize screenSize = chart->screen()->size();
@@ -224,9 +224,9 @@ int main(int argc, char **argv)
container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
container->setFocusPolicy(Qt::StrongFocus);
- widget->setWindowTitle(QStringLiteral("Hours playing banjo"));
+ widget.setWindowTitle(QStringLiteral("Hours playing banjo"));
- QTableWidget *tableWidget = new QTableWidget(widget);
+ QTableWidget *tableWidget = new QTableWidget(&widget);
tableWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
tableWidget->setAlternatingRowColors(true);
@@ -240,15 +240,15 @@ int main(int argc, char **argv)
QItemModelBarDataProxy *proxy = new QItemModelBarDataProxy(tableWidget->model(), mapping);
chart->setActiveDataProxy(proxy);
- ChartDataGenerator *generator = new ChartDataGenerator(chart, tableWidget);
+ ChartDataGenerator generator(chart, tableWidget);
- QObject::connect(chart, &Q3DBars::selectedBarPosChanged, generator,
+ QObject::connect(chart, &Q3DBars::selectedBarPosChanged, &generator,
&ChartDataGenerator::selectFromTable);
- QObject::connect(tableWidget, &QTableWidget::currentCellChanged, generator,
+ QObject::connect(tableWidget, &QTableWidget::currentCellChanged, &generator,
&ChartDataGenerator::selectedFromTable);
- widget->show();
- generator->start();
+ widget.show();
+ generator.start();
return app.exec();
}
diff --git a/src/datavisualization/data/qsurfacedataproxy.cpp b/src/datavisualization/data/qsurfacedataproxy.cpp
index 8471bb7e..30cc84f1 100644
--- a/src/datavisualization/data/qsurfacedataproxy.cpp
+++ b/src/datavisualization/data/qsurfacedataproxy.cpp
@@ -330,8 +330,7 @@ QSurfaceDataProxyPrivate::QSurfaceDataProxyPrivate(QSurfaceDataProxy *q)
QSurfaceDataProxyPrivate::~QSurfaceDataProxyPrivate()
{
- m_dataArray->clear();
- delete m_dataArray;
+ clearArray();
}
bool QSurfaceDataProxyPrivate::resetArray(QSurfaceDataArray *newArray, qreal minValueRows,
@@ -341,8 +340,7 @@ bool QSurfaceDataProxyPrivate::resetArray(QSurfaceDataArray *newArray, qreal min
if (!m_dataArray->size() && (!newArray || !newArray->size()))
return false;
- m_dataArray->clear();
- delete m_dataArray;
+ clearArray();
if (newArray) {
for (int i = 0; i < newArray->size(); i++) {
@@ -508,5 +506,20 @@ void QSurfaceDataProxyPrivate::limitValues(QVector3D &minValues, QVector3D &maxV
maxValues.setZ(m_maxValueRows);
}
+void QSurfaceDataProxyPrivate::clearRow(int rowIndex)
+{
+ if (m_dataArray->at(rowIndex)) {
+ delete m_dataArray->at(rowIndex);
+ (*m_dataArray)[rowIndex] = 0;
+ }
+}
+
+void QSurfaceDataProxyPrivate::clearArray()
+{
+ for (int i = 0; i < m_dataArray->size(); i++)
+ clearRow(i);
+ m_dataArray->clear();
+ delete m_dataArray;
+}
QT_DATAVISUALIZATION_END_NAMESPACE
diff --git a/src/datavisualization/data/qsurfacedataproxy_p.h b/src/datavisualization/data/qsurfacedataproxy_p.h
index 033a8a8f..8a60e93d 100644
--- a/src/datavisualization/data/qsurfacedataproxy_p.h
+++ b/src/datavisualization/data/qsurfacedataproxy_p.h
@@ -60,6 +60,9 @@ public:
private:
QSurfaceDataProxy *qptr();
+ void clearRow(int rowIndex);
+ void clearArray();
+
QSurfaceDataArray *m_dataArray;
qreal m_minValueRows;
qreal m_maxValueRows;
diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp
index edb0d971..bf57f21f 100644
--- a/src/datavisualization/engine/bars3drenderer.cpp
+++ b/src/datavisualization/engine/bars3drenderer.cpp
@@ -52,6 +52,8 @@ Bars3DRenderer::Bars3DRenderer(Bars3DController *controller)
: Abstract3DRenderer(controller),
m_controller(controller),
m_cachedIsSlicingActivated(false),
+ m_cachedRowCount(0),
+ m_cachedColumnCount(0),
m_selectedBar(0),
m_sliceSelection(0),
m_sliceCache(0),
diff --git a/src/datavisualization/engine/q3dcamera.cpp b/src/datavisualization/engine/q3dcamera.cpp
index 229657fd..a3f46a17 100644
--- a/src/datavisualization/engine/q3dcamera.cpp
+++ b/src/datavisualization/engine/q3dcamera.cpp
@@ -74,7 +74,7 @@ void Q3DCamera::copyValuesFrom(const Q3DCamera &source)
float *values = new float[16];
source.d_ptr->m_viewMatrix.copyDataTo(values);
d_ptr->m_viewMatrix = QMatrix4x4(values);
- delete values;
+ delete[] values;
d_ptr->m_xRotation = source.d_ptr->m_xRotation;
d_ptr->m_yRotation = source.d_ptr->m_yRotation;
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index 308f449e..5fb4f114 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -142,6 +142,11 @@ Surface3DRenderer::~Surface3DRenderer()
if (m_selectionPointer)
delete m_selectionPointer;
+
+ for (int i = 0; i < m_dataArray.size(); i++)
+ delete m_dataArray.at(i);
+ m_dataArray.clear();
+
}
void Surface3DRenderer::initializeOpenGL()