summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/render/framegraph/rendercapture.cpp1
-rw-r--r--src/render/framegraph/rendercapture_p.h2
-rw-r--r--tests/auto/core/common/qbackendnodetester.cpp5
-rw-r--r--tests/auto/core/common/qbackendnodetester.h2
-rw-r--r--tests/auto/render/render.pro3
-rw-r--r--tests/auto/render/rendercapture/rendercapture.pro12
-rw-r--r--tests/auto/render/rendercapture/tst_rendercapture.cpp125
7 files changed, 147 insertions, 3 deletions
diff --git a/src/render/framegraph/rendercapture.cpp b/src/render/framegraph/rendercapture.cpp
index f123fd74c..6b6c48375 100644
--- a/src/render/framegraph/rendercapture.cpp
+++ b/src/render/framegraph/rendercapture.cpp
@@ -74,7 +74,6 @@ void RenderCapture::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
requestCapture(propertyChange->value().toInt());
}
}
- markDirty(AbstractRenderer::AllDirty);
FrameGraphNode::sceneChangeEvent(e);
}
diff --git a/src/render/framegraph/rendercapture_p.h b/src/render/framegraph/rendercapture_p.h
index e2b87474c..6a5b0c08f 100644
--- a/src/render/framegraph/rendercapture_p.h
+++ b/src/render/framegraph/rendercapture_p.h
@@ -69,7 +69,7 @@ public:
void sendRenderCaptures();
protected:
- virtual void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e);
+ void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) Q_DECL_FINAL;
private:
diff --git a/tests/auto/core/common/qbackendnodetester.cpp b/tests/auto/core/common/qbackendnodetester.cpp
index 6e2dd6414..8534a05cd 100644
--- a/tests/auto/core/common/qbackendnodetester.cpp
+++ b/tests/auto/core/common/qbackendnodetester.cpp
@@ -57,6 +57,11 @@ void QBackendNodeTester::simulateInitialization(QNode *frontend, QBackendNode *b
backend->initializeFromPeer(change);
}
+void QBackendNodeTester::sceneChangeEvent(QBackendNode *backend, const Qt3DCore::QSceneChangePtr &e)
+{
+ backend->sceneChangeEvent(e);
+}
+
} // namespace Qt3DCore
QT_END_NAMESPACE
diff --git a/tests/auto/core/common/qbackendnodetester.h b/tests/auto/core/common/qbackendnodetester.h
index 88ee37515..fbd6c9581 100644
--- a/tests/auto/core/common/qbackendnodetester.h
+++ b/tests/auto/core/common/qbackendnodetester.h
@@ -39,6 +39,7 @@
#include <QObject>
#include <Qt3DCore/qnodeid.h>
+#include <Qt3DCore/qscenechange.h>
QT_BEGIN_NAMESPACE
@@ -55,6 +56,7 @@ public:
// Proxies to allow test classes to call private methods on QBackendNode
void simulateInitialization(QNode *frontend, QBackendNode *backend);
+ void sceneChangeEvent(QBackendNode *backend, const Qt3DCore::QSceneChangePtr &e);
};
} // namespace Qt3DCore
diff --git a/tests/auto/render/render.pro b/tests/auto/render/render.pro
index ce6aa6293..56877f99d 100644
--- a/tests/auto/render/render.pro
+++ b/tests/auto/render/render.pro
@@ -92,7 +92,8 @@ qtConfig(private_tests) {
technique \
materialparametergathererjob \
renderviewbuilder \
- filtercompatibletechniquejob
+ filtercompatibletechniquejob \
+ rendercapture
!macos: SUBDIRS += graphicshelpergl4
}
diff --git a/tests/auto/render/rendercapture/rendercapture.pro b/tests/auto/render/rendercapture/rendercapture.pro
new file mode 100644
index 000000000..419e15af0
--- /dev/null
+++ b/tests/auto/render/rendercapture/rendercapture.pro
@@ -0,0 +1,12 @@
+TEMPLATE = app
+
+TARGET = rendercapture
+
+QT += 3dcore 3dcore-private 3drender 3drender-private testlib
+
+CONFIG += testcase
+
+SOURCES += tst_rendercapture.cpp
+
+include(../../core/common/common.pri)
+include(../commons/commons.pri)
diff --git a/tests/auto/render/rendercapture/tst_rendercapture.cpp b/tests/auto/render/rendercapture/tst_rendercapture.cpp
new file mode 100644
index 000000000..4029ba136
--- /dev/null
+++ b/tests/auto/render/rendercapture/tst_rendercapture.cpp
@@ -0,0 +1,125 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QTest>
+#include <qbackendnodetester.h>
+#include <Qt3DRender/private/rendercapture_p.h>
+#include <Qt3DRender/qrendercapture.h>
+#include <Qt3DCore/private/qbackendnode_p.h>
+#include <Qt3DCore/qpropertyupdatedchange.h>
+#include "testpostmanarbiter.h"
+#include "testrenderer.h"
+
+class tst_RenderCapture : public Qt3DCore::QBackendNodeTester
+{
+ Q_OBJECT
+private Q_SLOTS:
+
+ void checkInitialState()
+ {
+ // GIVEN
+ Qt3DRender::QRenderCapture frontend;
+ Qt3DRender::Render::RenderCapture backend;
+
+ // WHEN
+ simulateInitialization(&frontend, &backend);
+
+ // THEN
+ QVERIFY(!backend.peerId().isNull());
+ QCOMPARE(backend.wasCaptureRequested(), false);
+ QCOMPARE(backend.isEnabled(), true);
+ }
+
+ void checkEnabledPropertyChange()
+ {
+ // GIVEN
+ Qt3DRender::Render::RenderCapture renderCapture;
+ TestRenderer renderer;
+ renderCapture.setRenderer(&renderer);
+
+ // WHEN
+ Qt3DCore::QPropertyUpdatedChangePtr change(new Qt3DCore::QPropertyUpdatedChange(renderCapture.peerId()));
+ change->setPropertyName(QByteArrayLiteral("enabled"));
+ change->setValue(QVariant::fromValue(true));
+ sceneChangeEvent(&renderCapture, change);
+
+ // THEN
+ QCOMPARE(renderCapture.isEnabled(), true);
+ }
+
+ void checkReceiveRenderCaptureRequest()
+ {
+ // GIVEN
+ Qt3DRender::Render::RenderCapture renderCapture;
+ TestRenderer renderer;
+ renderCapture.setRenderer(&renderer);
+ renderCapture.setEnabled(true);
+
+ // WHEN
+ Qt3DCore::QPropertyUpdatedChangePtr change(new Qt3DCore::QPropertyUpdatedChange(renderCapture.peerId()));
+ change->setPropertyName(QByteArrayLiteral("renderCaptureRequest"));
+ change->setValue(QVariant::fromValue(32));
+ sceneChangeEvent(&renderCapture, change);
+
+ // THEN
+ QCOMPARE(renderCapture.wasCaptureRequested(), true);
+ }
+
+ void checkAcknowledgeCaptureRequest()
+ {
+ // GIVEN
+ Qt3DRender::Render::RenderCapture renderCapture;
+ TestRenderer renderer;
+ renderCapture.setRenderer(&renderer);
+ renderCapture.setEnabled(true);
+
+ // WHEN
+ renderCapture.requestCapture(2);
+ renderCapture.requestCapture(4);
+
+ // THEN
+ QCOMPARE(renderCapture.wasCaptureRequested(), true);
+
+ // WHEN
+ renderCapture.acknowledgeCaptureRequest();
+
+ // THEN
+ QCOMPARE(renderCapture.wasCaptureRequested(), true);
+
+ // WHEN
+ renderCapture.acknowledgeCaptureRequest();
+
+ // THEN
+ QCOMPARE(renderCapture.wasCaptureRequested(), false);
+ }
+};
+
+
+QTEST_APPLESS_MAIN(tst_RenderCapture)
+
+#include "tst_rendercapture.moc"