From 1dae7aa22fcd16ff7d3d47c173c8590e4841f141 Mon Sep 17 00:00:00 2001 From: Jocelyn Turcotte Date: Thu, 4 Dec 2014 16:17:27 +0100 Subject: 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 --- src/plugins/scenegraph/softwarecontext/context.cpp | 1 + src/plugins/scenegraph/softwarecontext/context.h | 2 ++ src/plugins/scenegraph/softwarecontext/softwarelayer.cpp | 1 + 3 files changed, 4 insertions(+) (limited to 'src') 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(); -- cgit v1.2.3