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