[node] manage backendscope in renderer frontend

This commit is contained in:
Ivo van Dongen
2017-07-25 11:25:19 +03:00
committed by Ivo van Dongen
parent 4dee3a0d8d
commit d2a437d048
3 changed files with 10 additions and 6 deletions

View File

@@ -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 },

View File

@@ -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);
}
}) {

View File

@@ -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();