summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAurélien Brooke <aurelien@bahiasoft.fr>2023-03-21 12:57:01 +0100
committerAurélien Brooke <aurelien@bahiasoft.fr>2023-04-13 11:21:43 +0200
commit2c3ebe01cb2875bfe48af20446b8c2b62ff49382 (patch)
tree6fab65ea1025cc88727ef8573ef859564318a8c6
parent57f190ddfe396d61b7ed284aae263dfeedc8f666 (diff)
downloadqt3d-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.h3
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;