summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-07-07 15:00:55 +0200
committerSean Harmer <sean.harmer@kdab.com>2015-07-12 19:14:05 +0000
commit560065160b8351660ec6b6e4f783fefcc805221e (patch)
treef26f6c0ad757052d73867c63c578e2e91d6572dd
parentca6ce92ee3e15cbc6208fd67c74c4778f48b12be (diff)
QInputAspect: do not leak camera controller and input handler
Change-Id: Ic34bb36caf607d47339acc5ad0ca14803d7a6af0 Reviewed-by: RĂ©mi Benoit <remi.benoit@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r--src/input/qinputaspect.cpp8
-rw-r--r--src/input/qinputaspect_p.h4
2 files changed, 6 insertions, 6 deletions
diff --git a/src/input/qinputaspect.cpp b/src/input/qinputaspect.cpp
index 6051ea754..5f052ca43 100644
--- a/src/input/qinputaspect.cpp
+++ b/src/input/qinputaspect.cpp
@@ -71,8 +71,8 @@ QInputAspectPrivate::QInputAspectPrivate()
QInputAspect::QInputAspect(QObject *parent)
: QAbstractAspect(*new QInputAspectPrivate, parent)
{
- registerBackendType<QKeyboardController>(QBackendNodeFunctorPtr(new Input::KeyboardControllerFunctor(d_func()->m_inputHandler)));
- registerBackendType<QKeyboardInput>(QBackendNodeFunctorPtr(new Input::KeyboardInputFunctor(d_func()->m_inputHandler)));
+ registerBackendType<QKeyboardController>(QBackendNodeFunctorPtr(new Input::KeyboardControllerFunctor(d_func()->m_inputHandler.data())));
+ registerBackendType<QKeyboardInput>(QBackendNodeFunctorPtr(new Input::KeyboardInputFunctor(d_func()->m_inputHandler.data())));
}
QCamera *QInputAspect::camera() const
@@ -130,7 +130,7 @@ void QInputAspect::onInitialize(const QVariantMap &data)
object = v.value<QObject *>();
Q_D(QInputAspect);
if (object)
- object->installEventFilter(d->m_cameraController);
+ object->installEventFilter(d->m_cameraController.data());
d->m_inputHandler->setEventSource(object);
}
@@ -139,7 +139,7 @@ void QInputAspect::onCleanup()
Q_D(QInputAspect);
// At this point it is too late to call removeEventFilter as the eventSource (Window)
// may already be destroyed
- d->m_inputHandler = Q_NULLPTR;
+ d->m_inputHandler.reset(Q_NULLPTR);
}
void QInputAspect::visitNode(QNode *node)
diff --git a/src/input/qinputaspect_p.h b/src/input/qinputaspect_p.h
index 3b618a147..3383e8cfd 100644
--- a/src/input/qinputaspect_p.h
+++ b/src/input/qinputaspect_p.h
@@ -58,8 +58,8 @@ public:
QInputAspectPrivate();
Q_DECLARE_PUBLIC(QInputAspect)
- Input::InputHandler *m_inputHandler;
- Input::CameraController *m_cameraController;
+ QScopedPointer<Input::InputHandler> m_inputHandler;
+ QScopedPointer<Input::CameraController> m_cameraController;
};
} // Qt3D