summaryrefslogtreecommitdiffstats
path: root/tests/kinectsurface
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-30 10:59:50 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-30 11:20:55 +0300
commitf9b87511f913833cdd36406dee2e7eee212f27be (patch)
tree4e4a46bc222c0b8e8e5dfd2e8f6a6ee46db89c74 /tests/kinectsurface
parent4387b91df7e73ac824feafefc6cce16353b3145f (diff)
Fix kinect demo crash at shutdown
This is a quick and dirty hack, needs proper support for multiple graphs in same application. Change-Id: Ie07068bff264d24b18a098ad61f37813ccee5727 Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'tests/kinectsurface')
-rw-r--r--tests/kinectsurface/main.cpp20
-rw-r--r--tests/kinectsurface/surfacedata.cpp16
2 files changed, 25 insertions, 11 deletions
diff --git a/tests/kinectsurface/main.cpp b/tests/kinectsurface/main.cpp
index f428ba2d..04bfc207 100644
--- a/tests/kinectsurface/main.cpp
+++ b/tests/kinectsurface/main.cpp
@@ -145,23 +145,23 @@ int main(int argc, char **argv)
widget->show();
- SurfaceData *datagen = new SurfaceData(surface, scatter, bars, status);
+ SurfaceData datagen(surface, scatter, bars, status);
ContainerChanger changer(containerSurface, containerScatter, containerBars,
gradientOneButton, gradientTwoButton);
- QObject::connect(startButton, &QPushButton::clicked, datagen, &SurfaceData::start);
- QObject::connect(stopButton, &QPushButton::clicked, datagen, &SurfaceData::stop);
- QObject::connect(distanceSlider, &QSlider::valueChanged, datagen, &SurfaceData::setDistance);
- QObject::connect(resolutionBox, SIGNAL(activated(int)), datagen, SLOT(setResolution(int)));
+ QObject::connect(startButton, &QPushButton::clicked, &datagen, &SurfaceData::start);
+ QObject::connect(stopButton, &QPushButton::clicked, &datagen, &SurfaceData::stop);
+ QObject::connect(distanceSlider, &QSlider::valueChanged, &datagen, &SurfaceData::setDistance);
+ QObject::connect(resolutionBox, SIGNAL(activated(int)), &datagen, SLOT(setResolution(int)));
QObject::connect(modeBox, SIGNAL(activated(int)), &changer, SLOT(changeContainer(int)));
- QObject::connect(modeBox, SIGNAL(activated(int)), datagen, SLOT(changeMode(int)));
- QObject::connect(status, &QTextEdit::textChanged, datagen, &SurfaceData::scrollDown);
- QObject::connect(gradientOneButton, &QPushButton::clicked, datagen,
+ QObject::connect(modeBox, SIGNAL(activated(int)), &datagen, SLOT(changeMode(int)));
+ QObject::connect(status, &QTextEdit::textChanged, &datagen, &SurfaceData::scrollDown);
+ QObject::connect(gradientOneButton, &QPushButton::clicked, &datagen,
&SurfaceData::useGradientOne);
- QObject::connect(gradientTwoButton, &QPushButton::clicked, datagen,
+ QObject::connect(gradientTwoButton, &QPushButton::clicked, &datagen,
&SurfaceData::useGradientTwo);
- datagen->setDistance(distanceSlider->value());
+ datagen.setDistance(distanceSlider->value());
return app.exec();
}
diff --git a/tests/kinectsurface/surfacedata.cpp b/tests/kinectsurface/surfacedata.cpp
index e2e50ad8..45aa68c9 100644
--- a/tests/kinectsurface/surfacedata.cpp
+++ b/tests/kinectsurface/surfacedata.cpp
@@ -91,7 +91,21 @@ SurfaceData::SurfaceData(Q3DSurface *surface, Q3DScatter *scatter, Q3DBars *bars
}
SurfaceData::~SurfaceData()
-{
+{ // HACK: The current context needs to be destroyed last
+ // TODO: Fix properly in datavis code somehow
+ if (m_mode == Surface) {
+ delete m_scatter;
+ delete m_bars;
+ delete m_surface;
+ } else if (m_mode == Bars) {
+ delete m_scatter;
+ delete m_surface;
+ delete m_bars;
+ } else {
+ delete m_bars;
+ delete m_surface;
+ delete m_scatter;
+ }
}
void SurfaceData::updateData()