summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2017-07-25 11:16:39 +0300
committerIvo van Dongen <ivovandongen@users.noreply.github.com>2017-07-25 17:44:28 +0300
commit4dee3a0d8d527bd48d09cfb52c7b9c50cb50b602 (patch)
tree63a0140d2ebdc9b3de25fb5eb83535ef62bf48cd
parent9893b3d071d41373507913d59babeeb651579136 (diff)
downloadqtlocation-mapboxgl-4dee3a0d8d527bd48d09cfb52c7b9c50cb50b602.tar.gz
[qt] manage backendscope in renderer frontend
-rw-r--r--platform/qt/src/qmapboxgl.cpp4
-rw-r--r--platform/qt/src/qmapboxgl_p.hpp3
-rw-r--r--platform/qt/src/qmapboxgl_renderer_frontend_p.cpp8
-rw-r--r--platform/qt/src/qmapboxgl_renderer_frontend_p.hpp4
4 files changed, 11 insertions, 8 deletions
diff --git a/platform/qt/src/qmapboxgl.cpp b/platform/qt/src/qmapboxgl.cpp
index b79630b3df..6faffb5ffb 100644
--- a/platform/qt/src/qmapboxgl.cpp
+++ b/platform/qt/src/qmapboxgl.cpp
@@ -1446,9 +1446,6 @@ void QMapboxGL::render()
}
#endif
- // The OpenGL implementation automatically enables the OpenGL context for us.
- mbgl::BackendScope scope { *d_ptr, mbgl::BackendScope::ScopeType::Implicit };
-
d_ptr->dirty = false;
d_ptr->render();
}
@@ -1505,6 +1502,7 @@ QMapboxGLPrivate::QMapboxGLPrivate(QMapboxGL *q, const QMapboxGLSettings &settin
frontend = std::make_unique<QMapboxGLRendererFrontend>(
std::make_unique<mbgl::Renderer>(*this, pixelRatio, *fileSourceObj, *threadPool,
static_cast<mbgl::GLContextMode>(settings.contextMode())),
+ *this,
*this);
connect(frontend.get(), SIGNAL(updated()), this, SLOT(invalidate()));
diff --git a/platform/qt/src/qmapboxgl_p.hpp b/platform/qt/src/qmapboxgl_p.hpp
index e7eb1c2c2b..0fa9f6e8e4 100644
--- a/platform/qt/src/qmapboxgl_p.hpp
+++ b/platform/qt/src/qmapboxgl_p.hpp
@@ -31,9 +31,6 @@ public:
void updateAssumedState() final;
void activate() final {}
void deactivate() final {}
- mbgl::BackendScope::ScopeType getScopeType() const final {
- return mbgl::BackendScope::ScopeType::Implicit;
- }
// mbgl::MapObserver implementation.
void onCameraWillChange(mbgl::MapObserver::CameraChangeMode) final;
diff --git a/platform/qt/src/qmapboxgl_renderer_frontend_p.cpp b/platform/qt/src/qmapboxgl_renderer_frontend_p.cpp
index fd57168df6..d7d9e9c7b7 100644
--- a/platform/qt/src/qmapboxgl_renderer_frontend_p.cpp
+++ b/platform/qt/src/qmapboxgl_renderer_frontend_p.cpp
@@ -3,8 +3,9 @@
#include <mbgl/renderer/backend_scope.hpp>
#include <mbgl/renderer/renderer.hpp>
-QMapboxGLRendererFrontend::QMapboxGLRendererFrontend(std::unique_ptr<mbgl::Renderer> renderer_, mbgl::View& view_)
+QMapboxGLRendererFrontend::QMapboxGLRendererFrontend(std::unique_ptr<mbgl::Renderer> renderer_, mbgl::RendererBackend& backend_, mbgl::View& view_)
: renderer(std::move(renderer_))
+ , backend(backend_)
, view(view_) {
}
@@ -23,10 +24,15 @@ void QMapboxGLRendererFrontend::update(std::shared_ptr<mbgl::UpdateParameters> u
void QMapboxGLRendererFrontend::setObserver(mbgl::RendererObserver& observer_) {
if (!renderer) return;
+
renderer->setObserver(&observer_);
}
void QMapboxGLRendererFrontend::render() {
if (!renderer || !updateParameters) return;
+
+ // The OpenGL implementation automatically enables the OpenGL context for us.
+ mbgl::BackendScope scope { backend, mbgl::BackendScope::ScopeType::Implicit };
+
renderer->render(view, *updateParameters);
}
diff --git a/platform/qt/src/qmapboxgl_renderer_frontend_p.hpp b/platform/qt/src/qmapboxgl_renderer_frontend_p.hpp
index 0a0546042a..d7e414e5f9 100644
--- a/platform/qt/src/qmapboxgl_renderer_frontend_p.hpp
+++ b/platform/qt/src/qmapboxgl_renderer_frontend_p.hpp
@@ -1,5 +1,6 @@
#pragma once
+#include <mbgl/renderer/renderer_backend.hpp>
#include <mbgl/renderer/renderer_frontend.hpp>
#include <QObject>
@@ -14,7 +15,7 @@ class QMapboxGLRendererFrontend : public QObject, public mbgl::RendererFrontend
Q_OBJECT
public:
- explicit QMapboxGLRendererFrontend(std::unique_ptr<mbgl::Renderer>, mbgl::View&);
+ explicit QMapboxGLRendererFrontend(std::unique_ptr<mbgl::Renderer>, mbgl::RendererBackend&, mbgl::View&);
~QMapboxGLRendererFrontend() override;
void reset() override;
@@ -30,6 +31,7 @@ signals:
private:
std::unique_ptr<mbgl::Renderer> renderer;
+ mbgl::RendererBackend& backend;
mbgl::View& view;
std::shared_ptr<mbgl::UpdateParameters> updateParameters;
};