From c7f822d9fd84d9261423a28aa3aef5dbff1991d4 Mon Sep 17 00:00:00 2001 From: justin ma Date: Wed, 3 Jul 2013 17:04:24 +0800 Subject: [PATCH 1/5] node-waf --> node-gyp compatible for node 0.10.x --- binding.gyp | 45 ++++++++++++++++++++++++++++++++++++++ package.json | 2 +- src/dynamic_jpeg_stack.cpp | 17 +++++++------- src/dynamic_jpeg_stack.h | 4 ++-- src/fixed_jpeg_stack.cpp | 18 +++++++-------- src/fixed_jpeg_stack.h | 4 ++-- src/jpeg.cpp | 17 +++++++------- src/jpeg.h | 4 ++-- 8 files changed, 76 insertions(+), 35 deletions(-) create mode 100644 binding.gyp diff --git a/binding.gyp b/binding.gyp new file mode 100644 index 0000000..160f8f6 --- /dev/null +++ b/binding.gyp @@ -0,0 +1,45 @@ +{ + "targets": [ + { + "target_name": "jpeg", + "sources": [ + "src/common.cpp", + "src/jpeg_encoder.cpp", + "src/jpeg.cpp", + "src/fixed_jpeg_stack.cpp", + "src/dynamic_jpeg_stack.cpp", + "src/module.cpp", + ], + "conditions" : [ + [ + 'OS=="linux"', { + "libraries" : [ + '-ljpeg' + ], + 'cflags!': [ '-fno-exceptions' ], + 'cflags_cc!': [ '-fno-exceptions' ] + } + ], + [ + 'OS=="mac"', { + 'xcode_settings': { + 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES' + }, + "libraries" : [ + '-ljpeg' + ] + } + ], + [ + 'OS=="win"', { + "include_dirs" : [ "gyp/include" ], + "libraries" : [ + '<(module_root_dir)/gyp/lib/libpng.lib', + '<(module_root_dir)/gyp/lib/zlib.lib' + ] + } + ] + ] + } + ] +} diff --git a/package.json b/package.json index ce43a89..182c2b3 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "node": ">=0.1.93" }, "scripts": { - "install": "node-waf configure build" + "install": "node-gyp configure build" } } diff --git a/src/dynamic_jpeg_stack.cpp b/src/dynamic_jpeg_stack.cpp index 77058a6..3bc4eaa 100644 --- a/src/dynamic_jpeg_stack.cpp +++ b/src/dynamic_jpeg_stack.cpp @@ -378,7 +378,7 @@ DynamicJpegStack::SetQuality(const Arguments &args) } void -DynamicJpegStack::EIO_JpegEncode(eio_req *req) +DynamicJpegStack::UV_JpegEncode(uv_work_t *req) { encode_request *enc_req = (encode_request *)req->data; DynamicJpegStack *jpeg = (DynamicJpegStack *)enc_req->jpeg_obj; @@ -391,7 +391,7 @@ DynamicJpegStack::EIO_JpegEncode(eio_req *req) enc_req->jpeg_len = encoder.get_jpeg_len(); enc_req->jpeg = (char *)malloc(sizeof(*enc_req->jpeg)*enc_req->jpeg_len); if (!enc_req->jpeg) { - enc_req->error = strdup("malloc in DynamicJpegStack::EIO_JpegEncode failed."); + enc_req->error = strdup("malloc in DynamicJpegStack::UV_JpegEncode failed."); return; } else { @@ -403,13 +403,13 @@ DynamicJpegStack::EIO_JpegEncode(eio_req *req) } } -int -DynamicJpegStack::EIO_JpegEncodeAfter(eio_req *req) +void +DynamicJpegStack::UV_JpegEncodeAfter(uv_work_t *req) { HandleScope scope; - ev_unref(EV_DEFAULT_UC); encode_request *enc_req = (encode_request *)req->data; + delete req; DynamicJpegStack *jpeg = (DynamicJpegStack *)enc_req->jpeg_obj; Handle argv[3]; @@ -440,8 +440,6 @@ DynamicJpegStack::EIO_JpegEncodeAfter(eio_req *req) jpeg->Unref(); free(enc_req); - - return 0; } Handle @@ -468,9 +466,10 @@ DynamicJpegStack::JpegEncodeAsync(const Arguments &args) enc_req->jpeg_len = 0; enc_req->error = NULL; - eio_custom(EIO_JpegEncode, EIO_PRI_DEFAULT, EIO_JpegEncodeAfter, enc_req); + uv_work_t* req = new uv_work_t; + req->data = enc_req; + uv_queue_work(uv_default_loop(), req, UV_JpegEncode, (uv_after_work_cb)UV_JpegEncodeAfter); - ev_ref(EV_DEFAULT_UC); jpeg->Ref(); return Undefined(); diff --git a/src/dynamic_jpeg_stack.h b/src/dynamic_jpeg_stack.h index dae3672..f2069ef 100644 --- a/src/dynamic_jpeg_stack.h +++ b/src/dynamic_jpeg_stack.h @@ -21,8 +21,8 @@ class DynamicJpegStack : public node::ObjectWrap { void update_optimal_dimension(int x, int y, int w, int h); - static void EIO_JpegEncode(eio_req *req); - static int EIO_JpegEncodeAfter(eio_req *req); + static void UV_JpegEncode(uv_work_t *req); + static void UV_JpegEncodeAfter(uv_work_t *req); public: DynamicJpegStack(buffer_type bbuf_type); ~DynamicJpegStack(); diff --git a/src/fixed_jpeg_stack.cpp b/src/fixed_jpeg_stack.cpp index ed75fe1..4815344 100644 --- a/src/fixed_jpeg_stack.cpp +++ b/src/fixed_jpeg_stack.cpp @@ -248,7 +248,7 @@ FixedJpegStack::SetQuality(const Arguments &args) } void -FixedJpegStack::EIO_JpegEncode(eio_req *req) +FixedJpegStack::UV_JpegEncode(uv_work_t *req) { encode_request *enc_req = (encode_request *)req->data; FixedJpegStack *jpeg = (FixedJpegStack *)enc_req->jpeg_obj; @@ -259,7 +259,7 @@ FixedJpegStack::EIO_JpegEncode(eio_req *req) enc_req->jpeg_len = encoder.get_jpeg_len(); enc_req->jpeg = (char *)malloc(sizeof(*enc_req->jpeg)*enc_req->jpeg_len); if (!enc_req->jpeg) { - enc_req->error = strdup("malloc in FixedJpegStack::EIO_JpegEncode failed."); + enc_req->error = strdup("malloc in FixedJpegStack::UV_JpegEncode failed."); return; } else { @@ -271,13 +271,13 @@ FixedJpegStack::EIO_JpegEncode(eio_req *req) } } -int -FixedJpegStack::EIO_JpegEncodeAfter(eio_req *req) +void +FixedJpegStack::UV_JpegEncodeAfter(uv_work_t *req) { HandleScope scope; - ev_unref(EV_DEFAULT_UC); encode_request *enc_req = (encode_request *)req->data; + delete req; Handle argv[2]; @@ -305,8 +305,6 @@ FixedJpegStack::EIO_JpegEncodeAfter(eio_req *req) ((FixedJpegStack *)enc_req->jpeg_obj)->Unref(); free(enc_req); - - return 0; } Handle @@ -333,9 +331,9 @@ FixedJpegStack::JpegEncodeAsync(const Arguments &args) enc_req->jpeg_len = 0; enc_req->error = NULL; - eio_custom(EIO_JpegEncode, EIO_PRI_DEFAULT, EIO_JpegEncodeAfter, enc_req); - - ev_ref(EV_DEFAULT_UC); + uv_work_t* req = new uv_work_t; + req->data = enc_req; + uv_queue_work(uv_default_loop(), req, UV_JpegEncode, (uv_after_work_cb)UV_JpegEncodeAfter); jpeg->Ref(); return Undefined(); diff --git a/src/fixed_jpeg_stack.h b/src/fixed_jpeg_stack.h index 849505a..3aaa43b 100644 --- a/src/fixed_jpeg_stack.h +++ b/src/fixed_jpeg_stack.h @@ -13,8 +13,8 @@ class FixedJpegStack : public node::ObjectWrap { unsigned char *data; - static void EIO_JpegEncode(eio_req *req); - static int EIO_JpegEncodeAfter(eio_req *req); + static void UV_JpegEncode(uv_work_t *req); + static void UV_JpegEncodeAfter(uv_work_t *req); public: static void Initialize(v8::Handle target); diff --git a/src/jpeg.cpp b/src/jpeg.cpp index cf0a0eb..a2ca062 100644 --- a/src/jpeg.cpp +++ b/src/jpeg.cpp @@ -168,7 +168,7 @@ v8::Handle Jpeg::SetSmoothing(const v8::Arguments &args) } void -Jpeg::EIO_JpegEncode(eio_req *req) +Jpeg::UV_JpegEncode(uv_work_t *req) { encode_request *enc_req = (encode_request *)req->data; Jpeg *jpeg = (Jpeg *)enc_req->jpeg_obj; @@ -178,7 +178,7 @@ Jpeg::EIO_JpegEncode(eio_req *req) enc_req->jpeg_len = jpeg->jpeg_encoder.get_jpeg_len(); enc_req->jpeg = (char *)malloc(sizeof(*enc_req->jpeg)*enc_req->jpeg_len); if (!enc_req->jpeg) { - enc_req->error = strdup("malloc in Jpeg::EIO_JpegEncode failed."); + enc_req->error = strdup("malloc in Jpeg::UV_JpegEncode failed."); return; } else { @@ -190,13 +190,13 @@ Jpeg::EIO_JpegEncode(eio_req *req) } } -int -Jpeg::EIO_JpegEncodeAfter(eio_req *req) +void +Jpeg::UV_JpegEncodeAfter(uv_work_t *req) { HandleScope scope; - ev_unref(EV_DEFAULT_UC); encode_request *enc_req = (encode_request *)req->data; + delete req; Handle argv[2]; @@ -224,8 +224,6 @@ Jpeg::EIO_JpegEncodeAfter(eio_req *req) ((Jpeg *)enc_req->jpeg_obj)->Unref(); free(enc_req); - - return 0; } Handle @@ -252,9 +250,10 @@ Jpeg::JpegEncodeAsync(const Arguments &args) enc_req->jpeg_len = 0; enc_req->error = NULL; - eio_custom(EIO_JpegEncode, EIO_PRI_DEFAULT, EIO_JpegEncodeAfter, enc_req); + uv_work_t* req = new uv_work_t; + req->data = enc_req; + uv_queue_work(uv_default_loop(), req, UV_JpegEncode, (uv_after_work_cb)UV_JpegEncodeAfter); - ev_ref(EV_DEFAULT_UC); jpeg->Ref(); return Undefined(); diff --git a/src/jpeg.h b/src/jpeg.h index c60b809..acee92b 100644 --- a/src/jpeg.h +++ b/src/jpeg.h @@ -9,8 +9,8 @@ class Jpeg : public node::ObjectWrap { JpegEncoder jpeg_encoder; - static void EIO_JpegEncode(eio_req *req); - static int EIO_JpegEncodeAfter(eio_req *req); + static void UV_JpegEncode(uv_work_t *req); + static void UV_JpegEncodeAfter(uv_work_t *req); public: static void Initialize(v8::Handle target); Jpeg(unsigned char *ddata, int wwidth, int hheight, buffer_type bbuf_type); From 77814182b453ba1e2b23b9e899d219f1f01b24d6 Mon Sep 17 00:00:00 2001 From: justin ma Date: Wed, 3 Jul 2013 17:08:22 +0800 Subject: [PATCH 2/5] changed config on win --- binding.gyp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/binding.gyp b/binding.gyp index 160f8f6..49570ce 100644 --- a/binding.gyp +++ b/binding.gyp @@ -34,8 +34,7 @@ 'OS=="win"', { "include_dirs" : [ "gyp/include" ], "libraries" : [ - '<(module_root_dir)/gyp/lib/libpng.lib', - '<(module_root_dir)/gyp/lib/zlib.lib' + '<(module_root_dir)/gyp/lib/libjpeg.lib' ] } ] From 3604edfa7686106c046a409c6e31c822a8d302ea Mon Sep 17 00:00:00 2001 From: justin ma Date: Wed, 3 Jul 2013 17:47:10 +0800 Subject: [PATCH 3/5] v8:: --- src/module.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/module.cpp b/src/module.cpp index 593142d..8039e8d 100644 --- a/src/module.cpp +++ b/src/module.cpp @@ -7,9 +7,9 @@ using namespace v8; extern "C" void -init(Handle target) +init(v8::Handle target) { - HandleScope scope; + v8::HandleScope scope; Jpeg::Initialize(target); FixedJpegStack::Initialize(target); DynamicJpegStack::Initialize(target); From 0c277810cb4758cbd88e58d7249c8d963582c395 Mon Sep 17 00:00:00 2001 From: justin ma Date: Wed, 3 Jul 2013 17:55:01 +0800 Subject: [PATCH 4/5] Revert "v8::" This reverts commit 3604edfa7686106c046a409c6e31c822a8d302ea. --- src/module.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/module.cpp b/src/module.cpp index 8039e8d..593142d 100644 --- a/src/module.cpp +++ b/src/module.cpp @@ -7,9 +7,9 @@ using namespace v8; extern "C" void -init(v8::Handle target) +init(Handle target) { - v8::HandleScope scope; + HandleScope scope; Jpeg::Initialize(target); FixedJpegStack::Initialize(target); DynamicJpegStack::Initialize(target); From becc5ee99fa3bb2a94aeb6b267c4c16046ae745a Mon Sep 17 00:00:00 2001 From: justin ma Date: Mon, 19 Aug 2013 16:14:52 +0800 Subject: [PATCH 5/5] add module declare --- src/module.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/module.cpp b/src/module.cpp index 593142d..539139c 100644 --- a/src/module.cpp +++ b/src/module.cpp @@ -14,4 +14,5 @@ init(Handle target) FixedJpegStack::Initialize(target); DynamicJpegStack::Initialize(target); } +NODE_MODULE(jpeg, init)