[node] manage backendscope in renderer frontend
This commit is contained in:
committed by
Ivo van Dongen
parent
4dee3a0d8d
commit
d2a437d048
@@ -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 },
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user