diff --git a/binding.gyp b/binding.gyp index 8b1379de..5c11d4e5 100644 --- a/binding.gyp +++ b/binding.gyp @@ -42,7 +42,10 @@ 'RuntimeLibrary': 0, }, }, - }] + }], + ['runtime=="electron"', { + 'defines': ['NODE_RUNTIME_ELECTRON=1'] + }], ], }, { diff --git a/src/conversions.cc b/src/conversions.cc index 51db7be1..a65de94c 100644 --- a/src/conversions.cc +++ b/src/conversions.cc @@ -29,11 +29,11 @@ void InitConversions(Local exports) { point_transfer_buffer = static_cast(malloc(2 * sizeof(uint32_t))); - #if (V8_MAJOR_VERSION > 8 || (V8_MAJOR_VERSION == 8 && V8_MINOR_VERSION > 3)) + #if (V8_MAJOR_VERSION < 8 || (V8_MAJOR_VERSION == 8 && V8_MINOR_VERSION < 4) || (V8_MAJOR_VERSION == 8 && NODE_RUNTIME_ELECTRON)) + auto js_point_transfer_buffer = ArrayBuffer::New(Isolate::GetCurrent(), point_transfer_buffer, 2 * sizeof(uint32_t)); + #else auto backing_store = ArrayBuffer::NewBackingStore(point_transfer_buffer, 2 * sizeof(uint32_t), BackingStore::EmptyDeleter, nullptr); auto js_point_transfer_buffer = ArrayBuffer::New(Isolate::GetCurrent(), std::move(backing_store)); - #else - auto js_point_transfer_buffer = ArrayBuffer::New(Isolate::GetCurrent(), point_transfer_buffer, 2 * sizeof(uint32_t)); #endif Nan::Set(exports, Nan::New("pointTransferArray").ToLocalChecked(), Uint32Array::New(js_point_transfer_buffer, 0, 2)); diff --git a/src/node.cc b/src/node.cc index f9ab6444..a6368ae2 100644 --- a/src/node.cc +++ b/src/node.cc @@ -30,11 +30,11 @@ static inline void setup_transfer_buffer(uint32_t node_count) { transfer_buffer_length = new_length; transfer_buffer = static_cast(malloc(transfer_buffer_length * sizeof(uint32_t))); - #if (V8_MAJOR_VERSION > 8 || (V8_MAJOR_VERSION == 8 && V8_MINOR_VERSION > 3)) + #if (V8_MAJOR_VERSION < 8 || (V8_MAJOR_VERSION == 8 && V8_MINOR_VERSION < 4) || (V8_MAJOR_VERSION == 8 && NODE_RUNTIME_ELECTRON)) + auto js_transfer_buffer = ArrayBuffer::New(Isolate::GetCurrent(), transfer_buffer, transfer_buffer_length * sizeof(uint32_t)); + #else auto backing_store = ArrayBuffer::NewBackingStore(transfer_buffer, transfer_buffer_length * sizeof(uint32_t), BackingStore::EmptyDeleter, nullptr); auto js_transfer_buffer = ArrayBuffer::New(Isolate::GetCurrent(), std::move(backing_store)); - #else - auto js_transfer_buffer = ArrayBuffer::New(Isolate::GetCurrent(), transfer_buffer, transfer_buffer_length * sizeof(uint32_t)); #endif Nan::Set(