From d2a437d0486dc262f0615b7d14e35a5c4b168742 Mon Sep 17 00:00:00 2001 From: Ivo van Dongen Date: Tue, 25 Jul 2017 11:25:19 +0300 Subject: [node] manage backendscope in renderer frontend --- platform/node/src/node_map.cpp | 4 ++-- platform/node/src/node_renderer_frontend.cpp | 7 +++++-- platform/node/src/node_renderer_frontend.hpp | 5 +++-- 3 files changed, 10 insertions(+), 6 deletions(-) (limited to 'platform') diff --git a/platform/node/src/node_map.cpp b/platform/node/src/node_map.cpp index 079112b4c8..0b87a86210 100644 --- a/platform/node/src/node_map.cpp +++ b/platform/node/src/node_map.cpp @@ -526,7 +526,7 @@ void NodeMap::cancel() { map.reset(); auto renderer = std::make_unique(backend, pixelRatio, *this, threadpool); - rendererFrontend = std::make_unique(std::move(renderer), [this] { return view.get(); }); + rendererFrontend = std::make_unique(std::move(renderer), backend, [this] { return view.get(); }); map = std::make_unique(*rendererFrontend, mapObserver, mbgl::Size{ 256, 256 }, pixelRatio, *this, threadpool, mbgl::MapMode::Still); @@ -985,7 +985,7 @@ NodeMap::NodeMap(v8::Local options) : 1.0; }()) , mapObserver(NodeMapObserver()) - , rendererFrontend(std::make_unique(std::make_unique(backend, pixelRatio, *this, threadpool), [this] { return view.get(); })) + , rendererFrontend(std::make_unique(std::make_unique(backend, pixelRatio, *this, threadpool), backend, [this] { return view.get(); })) , map(std::make_unique(*rendererFrontend, mapObserver, mbgl::Size { 256, 256 }, diff --git a/platform/node/src/node_renderer_frontend.cpp b/platform/node/src/node_renderer_frontend.cpp index ca9d0af7e6..5ebb92717b 100644 --- a/platform/node/src/node_renderer_frontend.cpp +++ b/platform/node/src/node_renderer_frontend.cpp @@ -1,13 +1,16 @@ #include "node_renderer_frontend.hpp" + #include +#include #include namespace node_mbgl { -NodeRendererFrontend::NodeRendererFrontend(std::unique_ptr renderer_, ViewAccessorFunction getView) +NodeRendererFrontend::NodeRendererFrontend(std::unique_ptr renderer_, mbgl::RendererBackend& backend_, ViewAccessorFunction getView) : renderer(std::move(renderer_)) - , asyncInvalidate([&, this, getView] { + , asyncInvalidate([&, getView] { if (renderer && updateParameters) { + mbgl::BackendScope guard { backend_ }; renderer->render(*getView(), *updateParameters); } }) { diff --git a/platform/node/src/node_renderer_frontend.hpp b/platform/node/src/node_renderer_frontend.hpp index 238c7363ae..c70291317b 100644 --- a/platform/node/src/node_renderer_frontend.hpp +++ b/platform/node/src/node_renderer_frontend.hpp @@ -1,6 +1,5 @@ #pragma once -#include #include #include #include @@ -12,6 +11,8 @@ namespace mbgl { class Renderer; + class RendererBackend; + class View; } // namespace mbgl namespace node_mbgl { @@ -19,7 +20,7 @@ namespace node_mbgl { class NodeRendererFrontend : public mbgl::RendererFrontend { public: using ViewAccessorFunction = std::function; - NodeRendererFrontend(std::unique_ptr, ViewAccessorFunction); + NodeRendererFrontend(std::unique_ptr, mbgl::RendererBackend&, ViewAccessorFunction); ~NodeRendererFrontend(); -- cgit v1.2.1