From 4abe0a70e1c01ac48140447442f5d0b8713ff48b Mon Sep 17 00:00:00 2001 From: vroad Date: Sun, 17 May 2015 15:28:54 +0900 Subject: [PATCH] Fix problem with cairo on nodejs --- lime/graphics/cairo/CairoSurface.hx | 3 ++- project/src/utils/ByteArray.cpp | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lime/graphics/cairo/CairoSurface.hx b/lime/graphics/cairo/CairoSurface.hx index 4441100bf..5c0bc4045 100644 --- a/lime/graphics/cairo/CairoSurface.hx +++ b/lime/graphics/cairo/CairoSurface.hx @@ -57,7 +57,7 @@ abstract CairoSurface(Dynamic) { public static function fromImage (image:Image):CairoSurface { #if lime_cairo - return createForData (image.data.buffer.__getNativePointer (), CairoFormat.ARGB32, image.width, image.height, image.buffer.stride); + return createForData (#if nodejs lime_buffer_get_native_pointer (image.data) #else image.data.buffer.__getNativePointer () #end, CairoFormat.ARGB32, image.width, image.height, image.buffer.stride); #else return null; #end @@ -108,6 +108,7 @@ abstract CairoSurface(Dynamic) { private static var lime_cairo_image_surface_get_width = System.load ("lime", "lime_cairo_image_surface_get_width", 1); private static var lime_cairo_surface_destroy = System.load ("lime", "lime_cairo_surface_destroy", 1); private static var lime_cairo_surface_flush = System.load ("lime", "lime_cairo_surface_flush", 1); + private static var lime_buffer_get_native_pointer = System.load ("lime", "lime_buffer_get_native_pointer", 1); #end diff --git a/project/src/utils/ByteArray.cpp b/project/src/utils/ByteArray.cpp index 5bf21a040..6ddc54f39 100644 --- a/project/src/utils/ByteArray.cpp +++ b/project/src/utils/ByteArray.cpp @@ -145,6 +145,12 @@ namespace lime { return alloc_null (); } + + value lime_buffer_get_native_pointer (buffer inBuffer) { + + return alloc_float ((intptr_t)buffer_data (inBuffer)); + + } value lime_byte_array_init (value inFactory, value inLen, value inResize, value inBytes) { @@ -201,6 +207,8 @@ namespace lime { DEFINE_PRIM (lime_byte_array_init, 4); DEFINE_PRIM (lime_byte_array_overwrite_file, 2); DEFINE_PRIM (lime_byte_array_read_file, 1); + + DEFINE_PRIM (lime_buffer_get_native_pointer, 1); } \ No newline at end of file