diff options
author | Mauro Persano <mauro.persano@kdab.com> | 2017-06-01 08:52:09 -0300 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2017-06-21 11:03:50 +0000 |
commit | cbef13342b3d7613d861b810cc536fea09e711a2 (patch) | |
tree | 732b961a911a83a1087de72bea098deee7d2f04b /src/render/framegraph/rendercapture.cpp | |
parent | 4da20e46ba70e8847b02ffc1d1b3b605918c6235 (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.cpp | 17 |
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); } |