From d152efb8cb978cb65a8f724f9adf15a0bdf70adc Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Mon, 13 Mar 2017 15:09:40 +0200 Subject: [node] Support mbgl::MapObserver --- platform/node/src/node_map.cpp | 14 +++++++------- platform/node/src/node_map.hpp | 8 +++++++- 2 files changed, 14 insertions(+), 8 deletions(-) (limited to 'platform') diff --git a/platform/node/src/node_map.cpp b/platform/node/src/node_map.cpp index 686766ed19..3046652c21 100644 --- a/platform/node/src/node_map.cpp +++ b/platform/node/src/node_map.cpp @@ -39,6 +39,13 @@ static const char* releasedMessage() { return "Map resources have already been released"; } +NodeBackend::NodeBackend() + : HeadlessBackend(sharedDisplay()) {} + +void NodeBackend::onDidFailLoadingMap() { + throw std::runtime_error("Requires a map style to be a valid style JSON"); +} + void NodeMap::Init(v8::Local target) { v8::Local tpl = Nan::New(New); @@ -953,7 +960,6 @@ NodeMap::NodeMap(v8::Local options) ->NumberValue() : 1.0; }()), - backend(sharedDisplay()), map(std::make_unique(backend, mbgl::Size{ 256, 256 }, pixelRatio, @@ -962,12 +968,6 @@ NodeMap::NodeMap(v8::Local options) mbgl::MapMode::Still)), async(new uv_async_t) { - backend.setMapChangeCallback([&](mbgl::MapChange change) { - if (change == mbgl::MapChangeDidFailLoadingMap) { - throw std::runtime_error("Requires a map style to be a valid style JSON"); - } - }); - async->data = this; uv_async_init(uv_default_loop(), async, [](uv_async_t* h) { reinterpret_cast(h->data)->renderFinished(); diff --git a/platform/node/src/node_map.hpp b/platform/node/src/node_map.hpp index 47a5385ad6..122e491442 100644 --- a/platform/node/src/node_map.hpp +++ b/platform/node/src/node_map.hpp @@ -15,6 +15,12 @@ namespace node_mbgl { +class NodeBackend : public mbgl::HeadlessBackend { +public: + NodeBackend(); + void onDidFailLoadingMap() final; +}; + class NodeMap : public Nan::ObjectWrap, public mbgl::FileSource { public: @@ -59,7 +65,7 @@ public: std::unique_ptr request(const mbgl::Resource&, mbgl::FileSource::Callback); const float pixelRatio; - mbgl::HeadlessBackend backend; + NodeBackend backend; std::unique_ptr view; NodeThreadPool threadpool; std::unique_ptr map; -- cgit v1.2.1