diff --git a/platform/qt/src/qmapboxgl.cpp b/platform/qt/src/qmapboxgl.cpp index 8a3d6cb1b..01f0ad75a 100644 --- a/platform/qt/src/qmapboxgl.cpp +++ b/platform/qt/src/qmapboxgl.cpp @@ -561,6 +561,7 @@ void QMapboxGL::removeCustomLayer(const QString& id) void QMapboxGL::render() { + d_ptr->dirty = false; d_ptr->mapObj->render(); } @@ -584,7 +585,7 @@ QMapboxGLPrivate::QMapboxGLPrivate(QMapboxGL *q, const QMapboxGLSettings &settin static_cast(settings.constrainMode()))) { fileSourceObj->setAccessToken(settings.accessToken().toStdString()); - connect(this, SIGNAL(needsRendering()), q_ptr, SIGNAL(needsRendering())); + connect(this, SIGNAL(needsRendering()), q_ptr, SIGNAL(needsRendering()), Qt::QueuedConnection); connect(this, SIGNAL(mapRegionDidChange()), q_ptr, SIGNAL(mapRegionDidChange())); } @@ -610,7 +611,10 @@ std::array QMapboxGLPrivate::getFramebufferSize() const void QMapboxGLPrivate::invalidate() { - emit needsRendering(); + if (!dirty) { + emit needsRendering(); + dirty = true; + } } void QMapboxGLPrivate::notifyMapChange(mbgl::MapChange change) diff --git a/platform/qt/src/qmapboxgl_p.hpp b/platform/qt/src/qmapboxgl_p.hpp index 93da4089a..c52007321 100644 --- a/platform/qt/src/qmapboxgl_p.hpp +++ b/platform/qt/src/qmapboxgl_p.hpp @@ -44,6 +44,8 @@ public: std::unique_ptr fileSourceObj; std::unique_ptr mapObj; + bool dirty = false; + public slots: void connectionEstablished();