aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickshadereffectsource.cpp
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar.sletta@digia.com>2013-03-20 15:40:49 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-02 08:29:53 +0200
commit5eae605a475db96ed16d81101e00e736efe9f202 (patch)
tree835210db06b49d48637d192b1064a0e900a57aba /src/quick/items/qquickshadereffectsource.cpp
parent1c85dc38fa1939d1ce667693a227ab925f6a1dcc (diff)
Fix distance field antialiasing for retina displays.
Change-Id: I01d7d41a4e70822555bae453978dbe92fbb5c98d Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com> Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Diffstat (limited to 'src/quick/items/qquickshadereffectsource.cpp')
-rw-r--r--src/quick/items/qquickshadereffectsource.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/quick/items/qquickshadereffectsource.cpp b/src/quick/items/qquickshadereffectsource.cpp
index cab3692f5a..59b788643a 100644
--- a/src/quick/items/qquickshadereffectsource.cpp
+++ b/src/quick/items/qquickshadereffectsource.cpp
@@ -131,6 +131,7 @@ void QQuickShaderEffectSourceNode::markDirtyTexture()
QQuickShaderEffectTexture::QQuickShaderEffectTexture(QQuickItem *shaderSource)
: QSGDynamicTexture()
, m_item(0)
+ , m_device_pixel_ratio(1)
, m_format(GL_RGBA)
, m_renderer(0)
, m_fbo(0)
@@ -313,6 +314,7 @@ void QQuickShaderEffectTexture::grab()
m_renderer = m_context->createRenderer();
connect(m_renderer, SIGNAL(sceneGraphChanged()), this, SLOT(markDirtyTexture()));
}
+ m_renderer->setDevicePixelRatio(m_device_pixel_ratio);
m_renderer->setRootNode(static_cast<QSGRootNode *>(root));
bool deleteFboLater = false;
@@ -960,11 +962,12 @@ QSGNode *QQuickShaderEffectSource::updatePaintNode(QSGNode *oldNode, UpdatePaint
: m_textureSize;
Q_ASSERT(!textureSize.isEmpty());
+ QQuickItemPrivate *d = static_cast<QQuickItemPrivate *>(QObjectPrivate::get(this));
+
// Crate large textures on high-dpi displays.
- if (sourceItem() && sourceItem()->window())
- textureSize *= sourceItem()->window()->devicePixelRatio();
+ if (sourceItem())
+ textureSize *= d->window->devicePixelRatio();
- QQuickItemPrivate *d = static_cast<QQuickItemPrivate *>(QObjectPrivate::get(this));
const QSize minTextureSize = d->sceneGraphContext()->minimumFBOSize();
// Keep power-of-two by doubling the size.
while (textureSize.width() < minTextureSize.width())
@@ -972,6 +975,7 @@ QSGNode *QQuickShaderEffectSource::updatePaintNode(QSGNode *oldNode, UpdatePaint
while (textureSize.height() < minTextureSize.height())
textureSize.rheight() *= 2;
+ m_texture->setDevicePixelRatio(d->window->devicePixelRatio());
m_texture->setSize(textureSize);
m_texture->setRecursive(m_recursive);
m_texture->setFormat(GLenum(m_format));