diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-09-30 10:59:50 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-09-30 11:20:55 +0300 |
commit | f9b87511f913833cdd36406dee2e7eee212f27be (patch) | |
tree | 4e4a46bc222c0b8e8e5dfd2e8f6a6ee46db89c74 /tests/kinectsurface | |
parent | 4387b91df7e73ac824feafefc6cce16353b3145f (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.cpp | 20 | ||||
-rw-r--r-- | tests/kinectsurface/surfacedata.cpp | 16 |
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() |