From 68eed318e85438a04c06c2b3ac7171c8a224161f Mon Sep 17 00:00:00 2001 From: Paolo Angelelli Date: Tue, 26 Sep 2017 14:51:49 +0200 Subject: Fix MapboxGL crashing when no OpenGLContext can be created Task-number: QTBUG-63374 Change-Id: Iff172e7715ac9f59da23e890bae77ff522ed9e47 Reviewed-by: Alex Blasche --- src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.cpp b/src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.cpp index e56fe9b0..e27e2622 100644 --- a/src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.cpp +++ b/src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.cpp @@ -97,23 +97,26 @@ QSGNode *QGeoMapMapboxGLPrivate::updateSceneGraph(QSGNode *node, QQuickWindow *w } QMapboxGL *map = 0; - if (m_useFBO) { - if (!node) { + if (!node) { + QOpenGLContext *currentCtx = QOpenGLContext::currentContext(); + if (!currentCtx) { + qWarning("QOpenGLContext is NULL!"); + return node; + } + if (m_useFBO) { QSGMapboxGLTextureNode *mbglNode = new QSGMapboxGLTextureNode(m_settings, m_viewportSize, window->devicePixelRatio(), q); QObject::connect(mbglNode->map(), &QMapboxGL::mapChanged, q, &QGeoMapMapboxGL::onMapChanged); m_syncState = MapTypeSync | CameraDataSync | ViewportSync; node = mbglNode; - } - map = static_cast(node)->map(); - } else { - if (!node) { + } else { QSGMapboxGLRenderNode *mbglNode = new QSGMapboxGLRenderNode(m_settings, m_viewportSize, window->devicePixelRatio(), q); QObject::connect(mbglNode->map(), &QMapboxGL::mapChanged, q, &QGeoMapMapboxGL::onMapChanged); m_syncState = MapTypeSync | CameraDataSync | ViewportSync; node = mbglNode; } - map = static_cast(node)->map(); } + map = (m_useFBO) ? static_cast(node)->map() + : static_cast(node)->map(); if (m_syncState & MapTypeSync) { m_developmentMode = m_activeMapType.name().startsWith("mapbox://") -- cgit v1.2.1