From 560065160b8351660ec6b6e4f783fefcc805221e Mon Sep 17 00:00:00 2001 From: Paul Lemire Date: Tue, 7 Jul 2015 15:00:55 +0200 Subject: QInputAspect: do not leak camera controller and input handler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ic34bb36caf607d47339acc5ad0ca14803d7a6af0 Reviewed-by: RĂ©mi Benoit Reviewed-by: Sean Harmer --- src/input/qinputaspect.cpp | 8 ++++---- 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(QBackendNodeFunctorPtr(new Input::KeyboardControllerFunctor(d_func()->m_inputHandler))); - registerBackendType(QBackendNodeFunctorPtr(new Input::KeyboardInputFunctor(d_func()->m_inputHandler))); + registerBackendType(QBackendNodeFunctorPtr(new Input::KeyboardControllerFunctor(d_func()->m_inputHandler.data()))); + registerBackendType(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(); 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 m_inputHandler; + QScopedPointer m_cameraController; }; } // Qt3D -- cgit v1.2.3