aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/scenegraph/softwarecontext
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2014-12-04 16:17:27 +0100
committerSimon Hausmann <simon.hausmann@theqtcompany.com>2014-12-17 16:43:22 +0200
commit1dae7aa22fcd16ff7d3d47c173c8590e4841f141 (patch)
treecfa772ae483d04630fa97c03204d8fed6b0ecb23 /src/plugins/scenegraph/softwarecontext
parentde42b3a21ddb8aadd2f01c3f4c15663f78545ae6 (diff)
Support QSGLayer::setRect
Carry any non-full rect from the layer to QPainter::setWindow. This is needed by cc::RenderPass::output_rect in QtWebEngine. Change-Id: I8ffd7f0b7646e664a225df096de455899338d4ba Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src/plugins/scenegraph/softwarecontext')
-rw-r--r--src/plugins/scenegraph/softwarecontext/context.cpp1
-rw-r--r--src/plugins/scenegraph/softwarecontext/context.h2
-rw-r--r--src/plugins/scenegraph/softwarecontext/softwarelayer.cpp1
3 files changed, 4 insertions, 0 deletions
diff --git a/src/plugins/scenegraph/softwarecontext/context.cpp b/src/plugins/scenegraph/softwarecontext/context.cpp
index d25406ce2d..dafbfdaae9 100644
--- a/src/plugins/scenegraph/softwarecontext/context.cpp
+++ b/src/plugins/scenegraph/softwarecontext/context.cpp
@@ -147,6 +147,7 @@ void PixmapRenderer::render(QPixmap *target)
target->fill(clearColor());
QPainter painter(target);
painter.setRenderHint(QPainter::Antialiasing);
+ painter.setWindow(m_projectionRect);
RenderingVisitor(&painter).visitChildren(rootNode());
}
diff --git a/src/plugins/scenegraph/softwarecontext/context.h b/src/plugins/scenegraph/softwarecontext/context.h
index fc38e7d7e0..92a0f31d8a 100644
--- a/src/plugins/scenegraph/softwarecontext/context.h
+++ b/src/plugins/scenegraph/softwarecontext/context.h
@@ -66,6 +66,8 @@ public:
virtual void render();
void render(QPixmap *target);
+
+ QRect m_projectionRect;
};
class RenderContext : public QSGRenderContext
diff --git a/src/plugins/scenegraph/softwarecontext/softwarelayer.cpp b/src/plugins/scenegraph/softwarecontext/softwarelayer.cpp
index 037c73a08e..61f5aa031f 100644
--- a/src/plugins/scenegraph/softwarecontext/softwarelayer.cpp
+++ b/src/plugins/scenegraph/softwarecontext/softwarelayer.cpp
@@ -196,6 +196,7 @@ void SoftwareLayer::grab()
m_renderer->setDeviceRect(m_size);
m_renderer->setViewportRect(m_size);
+ m_renderer->m_projectionRect = m_rect.toRect();
m_renderer->setClearColor(Qt::transparent);
m_renderer->renderScene();