From a7cadd6f5f5278220847dcb2c4897a3c40896ea3 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader <bruno@mapbox.com> Date: Tue, 28 Mar 2017 14:11:46 +0300 Subject: [PATCH] Minimum texture size check for QSGMapboxGLTextureNode Change-Id: I096a14f5f1e8f83d4671990d052ecfff8095e985 Reviewed-by: Thiago Marcos P. Santos <tmpsantos@gmail.com> Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io> --- src/plugins/geoservices/mapboxgl/qsgmapboxglnode.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/plugins/geoservices/mapboxgl/qsgmapboxglnode.cpp b/src/plugins/geoservices/mapboxgl/qsgmapboxglnode.cpp index f7d95f630..d338a51a5 100644 --- a/src/plugins/geoservices/mapboxgl/qsgmapboxglnode.cpp +++ b/src/plugins/geoservices/mapboxgl/qsgmapboxglnode.cpp @@ -43,13 +43,15 @@ // QSGMapboxGLTextureNode +static const QSize minTextureSize = QSize(64, 64); + QSGMapboxGLTextureNode::QSGMapboxGLTextureNode(const QMapboxGLSettings &settings, const QSize &size, qreal pixelRatio, QGeoMapMapboxGL *geoMap) : QSGSimpleTextureNode() { setTextureCoordinatesTransform(QSGSimpleTextureNode::MirrorVertically); setFiltering(QSGTexture::Linear); - m_map.reset(new QMapboxGL(nullptr, settings, size, pixelRatio)); + m_map.reset(new QMapboxGL(nullptr, settings, size.expandedTo(minTextureSize), pixelRatio)); QObject::connect(m_map.data(), &QMapboxGL::needsRendering, geoMap, &QGeoMap::sgNodeChanged); QObject::connect(m_map.data(), &QMapboxGL::copyrightsChanged, geoMap, @@ -58,8 +60,9 @@ QSGMapboxGLTextureNode::QSGMapboxGLTextureNode(const QMapboxGLSettings &settings void QSGMapboxGLTextureNode::resize(const QSize &size, qreal pixelRatio) { - const QSize fbSize = size * pixelRatio; - m_map->resize(size, fbSize); + const QSize& minSize = size.expandedTo(minTextureSize); + const QSize fbSize = minSize * pixelRatio; + m_map->resize(minSize, fbSize); m_fbo.reset(new QOpenGLFramebufferObject(fbSize, QOpenGLFramebufferObject::CombinedDepthStencil)); @@ -75,7 +78,7 @@ void QSGMapboxGLTextureNode::resize(const QSize &size, qreal pixelRatio) setOwnsTexture(true); } - setRect(QRectF(QPointF(), size)); + setRect(QRectF(QPointF(), minSize)); markDirty(QSGNode::DirtyGeometry); } -- GitLab