summaryrefslogtreecommitdiffstats
path: root/src/render/framegraph/rendercapture.cpp
diff options
context:
space:
mode:
authorMauro Persano <mauro.persano@kdab.com>2017-06-01 08:52:09 -0300
committerAntti Määttä <antti.maatta@qt.io>2017-06-21 11:03:50 +0000
commitcbef13342b3d7613d861b810cc536fea09e711a2 (patch)
tree732b961a911a83a1087de72bea098deee7d2f04b /src/render/framegraph/rendercapture.cpp
parent4da20e46ba70e8847b02ffc1d1b3b605918c6235 (diff)
Add optional QRect parameter to QRenderCapture::requestCapture
Add optional QRect parameter ot QRenderCapture::requestCapture in order to capture only part of the buffer. Task-number: QTBUG-61068 Change-Id: I24605725764a07bd5f6a84637aaaab035ec9e3c7 Reviewed-by: Antti Määttä <antti.maatta@qt.io>
Diffstat (limited to 'src/render/framegraph/rendercapture.cpp')
-rw-r--r--src/render/framegraph/rendercapture.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/render/framegraph/rendercapture.cpp b/src/render/framegraph/rendercapture.cpp
index dea1cf565..188f3dbe6 100644
--- a/src/render/framegraph/rendercapture.cpp
+++ b/src/render/framegraph/rendercapture.cpp
@@ -50,20 +50,23 @@ RenderCapture::RenderCapture()
}
-void RenderCapture::requestCapture(int captureId)
+void RenderCapture::requestCapture(const QRenderCaptureRequest &request)
{
QMutexLocker lock(&m_mutex);
- m_requestedCaptures.push_back(captureId);
+ m_requestedCaptures.push_back(request);
}
+// called by render view initializer job
bool RenderCapture::wasCaptureRequested() const
{
return m_requestedCaptures.size() > 0 && isEnabled();
}
-void RenderCapture::acknowledgeCaptureRequest()
+// called by render view initializer job
+QRenderCaptureRequest RenderCapture::takeCaptureRequest()
{
- m_acknowledgedCaptures.push_back(m_requestedCaptures.takeFirst());
+ Q_ASSERT(!m_requestedCaptures.isEmpty());
+ return m_requestedCaptures.takeFirst();
}
void RenderCapture::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
@@ -71,18 +74,18 @@ void RenderCapture::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
if (e->type() == Qt3DCore::PropertyUpdated) {
Qt3DCore::QPropertyUpdatedChangePtr propertyChange = qSharedPointerCast<Qt3DCore::QPropertyUpdatedChange>(e);
if (propertyChange->propertyName() == QByteArrayLiteral("renderCaptureRequest")) {
- requestCapture(propertyChange->value().toInt());
+ requestCapture(propertyChange->value().value<QRenderCaptureRequest>());
}
}
FrameGraphNode::sceneChangeEvent(e);
}
// called by render thread
-void RenderCapture::addRenderCapture(const QImage &image)
+void RenderCapture::addRenderCapture(int captureId, const QImage &image)
{
QMutexLocker lock(&m_mutex);
auto data = RenderCaptureDataPtr::create();
- data.data()->captureId = m_acknowledgedCaptures.takeFirst();
+ data.data()->captureId = captureId;
data.data()->image = image;
m_renderCaptureData.push_back(data);
}