summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2017-07-25 11:25:19 +0300
committerIvo van Dongen <ivovandongen@users.noreply.github.com>2017-07-25 17:44:28 +0300
commitd2a437d0486dc262f0615b7d14e35a5c4b168742 (patch)
tree9056152f949d9316277cdba9c4fae9cea5e66244 /platform
parent4dee3a0d8d527bd48d09cfb52c7b9c50cb50b602 (diff)
downloadqtlocation-mapboxgl-d2a437d0486dc262f0615b7d14e35a5c4b168742.tar.gz
[node] manage backendscope in renderer frontend
Diffstat (limited to 'platform')
-rw-r--r--platform/node/src/node_map.cpp4
-rw-r--r--platform/node/src/node_renderer_frontend.cpp7
-rw-r--r--platform/node/src/node_renderer_frontend.hpp5
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();