diff options
author | Ivo van Dongen <info@ivovandongen.nl> | 2017-07-25 11:25:19 +0300 |
---|---|---|
committer | Ivo van Dongen <ivovandongen@users.noreply.github.com> | 2017-07-25 17:44:28 +0300 |
commit | d2a437d0486dc262f0615b7d14e35a5c4b168742 (patch) | |
tree | 9056152f949d9316277cdba9c4fae9cea5e66244 | |
parent | 4dee3a0d8d527bd48d09cfb52c7b9c50cb50b602 (diff) | |
download | qtlocation-mapboxgl-d2a437d0486dc262f0615b7d14e35a5c4b168742.tar.gz |
[node] manage backendscope in renderer frontend
-rw-r--r-- | platform/node/src/node_map.cpp | 4 | ||||
-rw-r--r-- | platform/node/src/node_renderer_frontend.cpp | 7 | ||||
-rw-r--r-- | platform/node/src/node_renderer_frontend.hpp | 5 |
3 files changed, 10 insertions, 6 deletions
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<mbgl::Renderer>(backend, pixelRatio, *this, threadpool); - rendererFrontend = std::make_unique<NodeRendererFrontend>(std::move(renderer), [this] { return view.get(); }); + rendererFrontend = std::make_unique<NodeRendererFrontend>(std::move(renderer), backend, [this] { return view.get(); }); map = std::make_unique<mbgl::Map>(*rendererFrontend, mapObserver, mbgl::Size{ 256, 256 }, pixelRatio, *this, threadpool, mbgl::MapMode::Still); @@ -985,7 +985,7 @@ NodeMap::NodeMap(v8::Local<v8::Object> options) : 1.0; }()) , mapObserver(NodeMapObserver()) - , rendererFrontend(std::make_unique<NodeRendererFrontend>(std::make_unique<mbgl::Renderer>(backend, pixelRatio, *this, threadpool), [this] { return view.get(); })) + , rendererFrontend(std::make_unique<NodeRendererFrontend>(std::make_unique<mbgl::Renderer>(backend, pixelRatio, *this, threadpool), backend, [this] { return view.get(); })) , map(std::make_unique<mbgl::Map>(*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 <mbgl/renderer/renderer.hpp> +#include <mbgl/renderer/renderer_backend.hpp> #include <mbgl/renderer/backend_scope.hpp> namespace node_mbgl { -NodeRendererFrontend::NodeRendererFrontend(std::unique_ptr<mbgl::Renderer> renderer_, ViewAccessorFunction getView) +NodeRendererFrontend::NodeRendererFrontend(std::unique_ptr<mbgl::Renderer> 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 <mbgl/renderer/renderer_backend.hpp> #include <mbgl/renderer/renderer_frontend.hpp> #include <mbgl/renderer/query.hpp> #include <mbgl/util/async_task.hpp> @@ -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<mbgl::View* ()>; - NodeRendererFrontend(std::unique_ptr<mbgl::Renderer>, ViewAccessorFunction); + NodeRendererFrontend(std::unique_ptr<mbgl::Renderer>, mbgl::RendererBackend&, ViewAccessorFunction); ~NodeRendererFrontend(); |