From e886eb95455335818972cafd65923a7fe8d83e49 Mon Sep 17 00:00:00 2001 From: Vladimir Kurchatkin Date: Sat, 2 Apr 2016 00:19:18 +0300 Subject: [PATCH] [node] Properly inherit from EventEmitter `process.EventEmitter` is deprecated, so we should use `require('events')` instead. --- platform/node/src/node_mapbox_gl_native.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/platform/node/src/node_mapbox_gl_native.cpp b/platform/node/src/node_mapbox_gl_native.cpp index e0b094d57..2a9e9fb6c 100644 --- a/platform/node/src/node_mapbox_gl_native.cpp +++ b/platform/node/src/node_mapbox_gl_native.cpp @@ -19,7 +19,7 @@ mbgl::util::RunLoop& NodeRunLoop() { } -NAN_MODULE_INIT(RegisterModule) { +void RegisterModule(v8::Local target, v8::Local module) { // This has the effect of: // a) Ensuring that the static local variable is initialized before any thread contention. // b) unreffing an async handle, which otherwise would keep the default loop running. @@ -63,16 +63,19 @@ NAN_MODULE_INIT(RegisterModule) { Nan::New("Resource").ToLocalChecked(), resource); - // Make the exported object inherit from process.EventEmitter - v8::Local process = Nan::Get( - Nan::GetCurrentContext()->Global(), - Nan::New("process").ToLocalChecked()).ToLocalChecked()->ToObject(); + // Make the exported object inherit from EventEmitter + v8::Local require = Nan::Get(module, + Nan::New("require").ToLocalChecked()).ToLocalChecked().As(); - v8::Local EventEmitter = Nan::Get(process, + v8::Local eventsString = Nan::New("events").ToLocalChecked(); + v8::Local events = Nan::Call(require, module, 1, &eventsString).ToLocalChecked()->ToObject(); + + v8::Local EventEmitter = Nan::Get(events, Nan::New("EventEmitter").ToLocalChecked()).ToLocalChecked()->ToObject(); Nan::SetPrototype(target, Nan::Get(EventEmitter, Nan::New("prototype").ToLocalChecked()).ToLocalChecked()); + Nan::CallAsFunction(EventEmitter, target, 0, nullptr); mbgl::Log::setObserver(std::make_unique(target->ToObject())); }