diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-07-07 15:00:55 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2015-07-12 19:14:05 +0000 |
commit | 560065160b8351660ec6b6e4f783fefcc805221e (patch) | |
tree | f26f6c0ad757052d73867c63c578e2e91d6572dd | |
parent | ca6ce92ee3e15cbc6208fd67c74c4778f48b12be (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.cpp | 8 | ||||
-rw-r--r-- | src/input/qinputaspect_p.h | 4 |
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 |