summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2017-07-25 10:56:00 +0300
committerIvo van Dongen <ivovandongen@users.noreply.github.com>2017-07-25 17:44:28 +0300
commit66e1429460b0aad6b295773db6e6fe965831ff3c (patch)
tree6a311f5c8dfeaa573a20536197b7e49f6398ade7
parent27343c6a75aba9c4d04b0362fc0e50889f0e2e69 (diff)
downloadqtlocation-mapboxgl-66e1429460b0aad6b295773db6e6fe965831ff3c.tar.gz
[ios][macos] manage backendscope in renderer frontend
-rw-r--r--platform/darwin/src/MGLRendererFrontend.h12
-rw-r--r--platform/ios/src/MGLMapView.mm6
-rw-r--r--platform/macos/src/MGLMapView.mm6
3 files changed, 11 insertions, 13 deletions
diff --git a/platform/darwin/src/MGLRendererFrontend.h b/platform/darwin/src/MGLRendererFrontend.h
index 839d3be773..3611577f2e 100644
--- a/platform/darwin/src/MGLRendererFrontend.h
+++ b/platform/darwin/src/MGLRendererFrontend.h
@@ -1,4 +1,6 @@
+#include <mbgl/renderer/backend_scope.hpp>
#include <mbgl/renderer/renderer.hpp>
+#include <mbgl/renderer/renderer_backend.hpp>
#include <mbgl/renderer/renderer_frontend.hpp>
#include <mbgl/util/async_task.hpp>
#include <mbgl/util/optional.hpp>
@@ -11,9 +13,10 @@
class MGLRenderFrontend : public mbgl::RendererFrontend
{
public:
- MGLRenderFrontend(std::unique_ptr<mbgl::Renderer> renderer_, MGLMapView* nativeView_, mbgl::View* mbglView_, bool async = false)
+ MGLRenderFrontend(std::unique_ptr<mbgl::Renderer> renderer_, MGLMapView* nativeView_, mbgl::RendererBackend& mbglBackend_, mbgl::View& mbglView_, bool async = false)
: renderer(std::move(renderer_))
, nativeView(nativeView_)
+ , mbglBackend(mbglBackend_)
, mbglView(mbglView_) {
if (async) {
@@ -46,7 +49,9 @@ public:
void render() {
if (!renderer || !updateParameters) return;
- renderer->render(*mbglView, *updateParameters);
+ mbgl::BackendScope guard { mbglBackend, mbgl::BackendScope::ScopeType::Implicit };
+
+ renderer->render(mbglView, *updateParameters);
}
mbgl::Renderer* getRenderer() {
@@ -61,7 +66,8 @@ public:
private:
std::unique_ptr<mbgl::Renderer> renderer;
__weak MGLMapView *nativeView = nullptr;
- mbgl::View *mbglView = nullptr;
+ mbgl::RendererBackend& mbglBackend;
+ mbgl::View& mbglView;
std::shared_ptr<mbgl::UpdateParameters> updateParameters;
mbgl::optional<mbgl::util::AsyncTask> asyncInvalidate;
};
diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm
index 1800332e42..83ea4a8d8f 100644
--- a/platform/ios/src/MGLMapView.mm
+++ b/platform/ios/src/MGLMapView.mm
@@ -455,7 +455,7 @@ public:
_mbglThreadPool = mbgl::sharedThreadPool();
auto renderer = std::make_unique<mbgl::Renderer>(*_mbglView, scaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::GLContextMode::Unique);
- _rendererFrontend = std::make_unique<MGLRenderFrontend>(std::move(renderer), self, _mbglView);
+ _rendererFrontend = std::make_unique<MGLRenderFrontend>(std::move(renderer), self, *_mbglView, *_mbglView);
_mbglMap = new mbgl::Map(*_rendererFrontend, *_mbglView, self.size, scaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::MapMode::Continuous, mbgl::ConstrainMode::None, mbgl::ViewportMode::Default);
// start paused if in IB
@@ -5528,10 +5528,6 @@ public:
return reinterpret_cast<mbgl::gl::ProcAddress>(symbol);
}
-
- mbgl::BackendScope::ScopeType getScopeType() const override {
- return mbgl::BackendScope::ScopeType::Implicit;
- }
void activate() override
{
diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm
index 10afdc6e5f..6707f59628 100644
--- a/platform/macos/src/MGLMapView.mm
+++ b/platform/macos/src/MGLMapView.mm
@@ -275,7 +275,7 @@ public:
_mbglThreadPool = mbgl::sharedThreadPool();
auto renderer = std::make_unique<mbgl::Renderer>(*_mbglView, [NSScreen mainScreen].backingScaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::GLContextMode::Unique);
- _rendererFrontend = std::make_unique<MGLRenderFrontend>(std::move(renderer), self, _mbglView, true);
+ _rendererFrontend = std::make_unique<MGLRenderFrontend>(std::move(renderer), self, *_mbglView, *_mbglView, true);
_mbglMap = new mbgl::Map(*_rendererFrontend, *_mbglView, self.size, [NSScreen mainScreen].backingScaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::MapMode::Continuous, mbgl::ConstrainMode::None, mbgl::ViewportMode::Default);
// Install the OpenGL layer. Interface Builder’s synchronous drawing means
@@ -2878,10 +2878,6 @@ public:
assumeFramebufferBinding(fbo);
assumeViewport(0, 0, nativeView.framebufferSize);
}
-
- mbgl::BackendScope::ScopeType getScopeType() const override {
- return mbgl::BackendScope::ScopeType::Implicit;
- }
void bind() override {
setFramebufferBinding(fbo);