diff --git a/src/Canvas.cc b/src/Canvas.cc index e9580af..54f97e1 100644 --- a/src/Canvas.cc +++ b/src/Canvas.cc @@ -18,6 +18,7 @@ using namespace node; */ typedef struct { + Persistent pfn; Handle fn; unsigned len; uint8_t *data; @@ -128,12 +129,16 @@ toBuffer(void *c, const uint8_t *data, unsigned len) { Handle Canvas::ToBuffer(const Arguments &args) { HandleScope scope; + Canvas *canvas = ObjectWrap::Unwrap(args.This()); // Async if (args[0]->IsFunction()) { - + closure_t *closure = new closure_t; + closure->len = 0; + // TODO: only one callback fn in closure + closure->fn = Persistent::New(Handle::Cast(args[0])); + return Undefined(); } else { - Canvas *canvas = ObjectWrap::Unwrap(args.This()); closure_t closure; closure.len = 0; @@ -150,8 +155,6 @@ Canvas::ToBuffer(const Arguments &args) { return buf->handle_; } } - - return Undefined(); } /*