diff --git a/lime/_backend/native/NativeCFFI.hx b/lime/_backend/native/NativeCFFI.hx index 8644d77e4..19102a135 100644 --- a/lime/_backend/native/NativeCFFI.hx +++ b/lime/_backend/native/NativeCFFI.hx @@ -39,7 +39,8 @@ class NativeCFFI { @:cffi private static function lime_application_update (handle:Dynamic):Bool; @:cffi private static function lime_audio_load (data:Dynamic, buffer:Dynamic):Dynamic; @:cffi private static function lime_bytes_from_data_pointer (data:Float, length:Int):Dynamic; - @:cffi private static function lime_bytes_get_data_pointer (data:Dynamic, offset:Int):Float; + @:cffi private static function lime_bytes_get_data_pointer (data:Dynamic):Float; + @:cffi private static function lime_bytes_get_data_pointer_offset (data:Dynamic, offset:Int):Float; @:cffi private static function lime_bytes_read_file (path:String, bytes:Dynamic):Dynamic; @:cffi private static function lime_cffi_get_native_pointer (ptr:Dynamic):Float; @:cffi private static function lime_clipboard_get_text ():Dynamic; diff --git a/lime/utils/DataPointer.hx b/lime/utils/DataPointer.hx index 675fc16c5..8b4b53358 100644 --- a/lime/utils/DataPointer.hx +++ b/lime/utils/DataPointer.hx @@ -53,7 +53,7 @@ abstract DataPointer(DataPointerType) to DataPointerType { #if (lime_cffi && !macro) if (pointer == null || pointer.bytes == null) return cast 0; - var data:Float = NativeCFFI.lime_bytes_get_data_pointer (pointer.bytes, pointer.offset); + var data:Float = NativeCFFI.lime_bytes_get_data_pointer_offset (pointer.bytes, pointer.offset); return new DataPointer (data); #elseif (js && !display) return fromBytes (pointer.bytes); @@ -68,7 +68,7 @@ abstract DataPointer(DataPointerType) to DataPointerType { #if (lime_cffi && !js && !macro) if (arrayBufferView == null) return cast 0; - var data:Float = NativeCFFI.lime_bytes_get_data_pointer (arrayBufferView.buffer, arrayBufferView.byteOffset); + var data:Float = NativeCFFI.lime_bytes_get_data_pointer_offset (arrayBufferView.buffer, arrayBufferView.byteOffset); return new DataPointer (data); #elseif (js && !display) return new DataPointer (arrayBufferView); @@ -97,7 +97,7 @@ abstract DataPointer(DataPointerType) to DataPointerType { #if (lime_cffi && !macro) if (bytes == null) return cast 0; - var data:Float = NativeCFFI.lime_bytes_get_data_pointer (bytes, 0); + var data:Float = NativeCFFI.lime_bytes_get_data_pointer (bytes); return new DataPointer (data); #elseif (js && !display) return fromArrayBuffer (bytes.getData ()); diff --git a/project/src/ExternalInterface.cpp b/project/src/ExternalInterface.cpp index e2252296c..4d8a05e65 100644 --- a/project/src/ExternalInterface.cpp +++ b/project/src/ExternalInterface.cpp @@ -224,7 +224,15 @@ namespace lime { } - double lime_bytes_get_data_pointer (value bytes, int offset) { + double lime_bytes_get_data_pointer (value bytes) { + + Bytes data = Bytes (bytes); + return (uintptr_t)data.Data (); + + } + + + double lime_bytes_get_data_pointer_offset (value bytes, int offset) { Bytes data = Bytes (bytes); return (uintptr_t)data.Data () + offset; @@ -1780,7 +1788,8 @@ namespace lime { DEFINE_PRIME1 (lime_application_update); DEFINE_PRIME2 (lime_audio_load); DEFINE_PRIME2 (lime_bytes_from_data_pointer); - DEFINE_PRIME2 (lime_bytes_get_data_pointer); + DEFINE_PRIME1 (lime_bytes_get_data_pointer); + DEFINE_PRIME2 (lime_bytes_get_data_pointer_offset); DEFINE_PRIME2 (lime_bytes_read_file); DEFINE_PRIME1 (lime_cffi_get_native_pointer); DEFINE_PRIME1 (lime_cffi_set_finalizer);