diff options
author | Aurélien Brooke <aurelien@bahiasoft.fr> | 2023-03-21 12:57:01 +0100 |
---|---|---|
committer | Aurélien Brooke <aurelien@bahiasoft.fr> | 2023-04-13 11:21:43 +0200 |
commit | 2c3ebe01cb2875bfe48af20446b8c2b62ff49382 (patch) | |
tree | 6fab65ea1025cc88727ef8573ef859564318a8c6 | |
parent | 57f190ddfe396d61b7ed284aae263dfeedc8f666 (diff) | |
download | qt3d-2c3ebe01cb2875bfe48af20446b8c2b62ff49382.tar.gz |
PlatformSurfaceFilter: fix crash when Scene3D is destroyed after window
When closing a window containing a Scene3D, the aspect engine is
destroyed after the QWindow (because of delete later), so the m_obj
pointer we store inside the PlatformSurfaceFilter becomes dangling,
leading to a crash in the destructor.
Use QPointer to ensure m_obj it set null when it is destroyed.
Fixes: QTBUG-111325
Pick-to: 6.5
Change-Id: Icf153700a5708abff4b92b14ce2f9bb12d8653eb
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r-- | src/render/backend/platformsurfacefilter_p.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/render/backend/platformsurfacefilter_p.h b/src/render/backend/platformsurfacefilter_p.h index 7074850d9..1a4c42c81 100644 --- a/src/render/backend/platformsurfacefilter_p.h +++ b/src/render/backend/platformsurfacefilter_p.h @@ -18,6 +18,7 @@ #include <private/qt3drender_global_p.h> #include <QtCore/qobject.h> +#include <QtCore/qpointer.h> #include <QtGui/qsurface.h> #include <QSemaphore> @@ -64,7 +65,7 @@ public: } } private: - QObject *m_obj; + QPointer<QObject> m_obj; QSurface *m_surface; static QSemaphore m_surfacesSemaphore; |