diff options
-rw-r--r-- | src/render/framegraph/qrendercapture.cpp | 3 | ||||
-rw-r--r-- | tests/auto/render/qrendercapture/tst_qrendercapture.cpp | 19 |
2 files changed, 19 insertions, 3 deletions
diff --git a/src/render/framegraph/qrendercapture.cpp b/src/render/framegraph/qrendercapture.cpp index d5b6d63ae..5bda569f9 100644 --- a/src/render/framegraph/qrendercapture.cpp +++ b/src/render/framegraph/qrendercapture.cpp @@ -252,9 +252,6 @@ QRenderCapturePrivate::QRenderCapturePrivate() */ QRenderCapturePrivate::~QRenderCapturePrivate() { - Q_Q(QRenderCapture); - for (QRenderCaptureReply *reply : qAsConst(m_waitingReplies)) - reply->disconnect(q); } /*! diff --git a/tests/auto/render/qrendercapture/tst_qrendercapture.cpp b/tests/auto/render/qrendercapture/tst_qrendercapture.cpp index b2144d500..2fab1e837 100644 --- a/tests/auto/render/qrendercapture/tst_qrendercapture.cpp +++ b/tests/auto/render/qrendercapture/tst_qrendercapture.cpp @@ -34,6 +34,8 @@ #include <Qt3DRender/QRenderCapture> #include <Qt3DRender/private/qrendercapture_p.h> +#include <QPointer> + #include "testpostmanarbiter.h" class MyRenderCapture : public Qt3DRender::QRenderCapture @@ -129,6 +131,23 @@ private Q_SLOTS: // THEN renderCapture->sceneChangeEvent(e); // Should not reset } + + void crashOnRenderCaptureDeletion() + { + // GIVEN + QScopedPointer<Qt3DRender::QRenderCapture> renderCapture(new Qt3DRender::QRenderCapture()); + QPointer<Qt3DRender::QRenderCaptureReply> renderCaptureReply(renderCapture->requestCapture()); + + // THEN + QVERIFY(renderCaptureReply); + + // WHEN + renderCapture.reset(); + + // THEN (Should not crash and delete reply) + QVERIFY(!renderCaptureReply); + } + }; QTEST_MAIN(tst_QRenderCapture) |