summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/render/framegraph/qrendercapture.cpp3
-rw-r--r--tests/auto/render/qrendercapture/tst_qrendercapture.cpp19
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)