summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Nichols <andy.nichols@theqtcompany.com>2015-01-06 16:49:34 +0100
committerAndy Nichols <andy.nichols@theqtcompany.com>2015-01-08 12:42:51 +0200
commitaf30f6492bedb0d24a2d5b518e4e01f000852520 (patch)
tree810d474df63c831aa3f2e119b6b417860f6c9826
parent5c4c7fe9b4a111d5e6071b67c3813b05c096e8c7 (diff)
Account for Device Pixel Ratio when rendering QSGLayer
Change-Id: I3570a6ee87786f1459a922bd43f38d1bbbe2c640 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com> Reviewed-by: Paul Tvete <paul.tvete@theqtcompany.com>
-rw-r--r--src/plugins/scenegraph/softwarecontext/context.cpp1
-rw-r--r--src/plugins/scenegraph/softwarecontext/softwarelayer.cpp9
2 files changed, 7 insertions, 3 deletions
diff --git a/src/plugins/scenegraph/softwarecontext/context.cpp b/src/plugins/scenegraph/softwarecontext/context.cpp
index dafbfdaae9..f107290f62 100644
--- a/src/plugins/scenegraph/softwarecontext/context.cpp
+++ b/src/plugins/scenegraph/softwarecontext/context.cpp
@@ -143,7 +143,6 @@ void PixmapRenderer::render()
void PixmapRenderer::render(QPixmap *target)
{
- const QRect rect(0, 0, target->width(), target->height());
target->fill(clearColor());
QPainter painter(target);
painter.setRenderHint(QPainter::Antialiasing);
diff --git a/src/plugins/scenegraph/softwarecontext/softwarelayer.cpp b/src/plugins/scenegraph/softwarecontext/softwarelayer.cpp
index 61f5aa031f..059278c547 100644
--- a/src/plugins/scenegraph/softwarecontext/softwarelayer.cpp
+++ b/src/plugins/scenegraph/softwarecontext/softwarelayer.cpp
@@ -185,8 +185,10 @@ void SoftwareLayer::grab()
m_renderer->setDevicePixelRatio(m_device_pixel_ratio);
m_renderer->setRootNode(static_cast<QSGRootNode *>(root));
- if (m_pixmap.size() != m_size)
+ if (m_pixmap.size() != m_size) {
m_pixmap = QPixmap(m_size);
+ m_pixmap.setDevicePixelRatio(m_device_pixel_ratio);
+ }
// Render texture.
root->markDirty(QSGNode::DirtyForceUpdate); // Force matrix, clip and opacity update.
@@ -196,7 +198,10 @@ void SoftwareLayer::grab()
m_renderer->setDeviceRect(m_size);
m_renderer->setViewportRect(m_size);
- m_renderer->m_projectionRect = m_rect.toRect();
+ m_renderer->m_projectionRect = QRect(m_rect.x() * m_device_pixel_ratio,
+ m_rect.y() * m_device_pixel_ratio,
+ m_rect.width() * m_device_pixel_ratio,
+ m_rect.height() * m_device_pixel_ratio);
m_renderer->setClearColor(Qt::transparent);
m_renderer->renderScene();