Improve System.endianness calculation
This commit is contained in:
@@ -6,6 +6,9 @@ import lime._backend.native.NativeCFFI;
|
|||||||
import lime.app.Application;
|
import lime.app.Application;
|
||||||
import lime.app.Config;
|
import lime.app.Config;
|
||||||
import lime.math.Rectangle;
|
import lime.math.Rectangle;
|
||||||
|
import lime.utils.ArrayBuffer;
|
||||||
|
import lime.utils.UInt8Array;
|
||||||
|
import lime.utils.UInt16Array;
|
||||||
|
|
||||||
#if flash
|
#if flash
|
||||||
import flash.net.URLRequest;
|
import flash.net.URLRequest;
|
||||||
@@ -593,13 +596,23 @@ class System {
|
|||||||
|
|
||||||
private static function get_endianness ():Endian {
|
private static function get_endianness ():Endian {
|
||||||
|
|
||||||
// TODO: Make this smarter
|
if (endianness == null) {
|
||||||
|
|
||||||
|
#if (ps3 || wiiu || flash)
|
||||||
|
return BIG_ENDIAN;
|
||||||
|
#else
|
||||||
|
var arrayBuffer = new ArrayBuffer (2);
|
||||||
|
var uint8Array = new UInt8Array (arrayBuffer);
|
||||||
|
var uint16array = new UInt16Array (arrayBuffer);
|
||||||
|
uint8Array[0] = 0xAA;
|
||||||
|
uint8Array[1] = 0xBB;
|
||||||
|
if (uint16array[0] == 0xAABB) endianness = BIG_ENDIAN;
|
||||||
|
else endianness = LITTLE_ENDIAN;
|
||||||
|
#end
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#if (ps3 || wiiu || flash)
|
return endianness;
|
||||||
return BIG_ENDIAN;
|
|
||||||
#else
|
|
||||||
return LITTLE_ENDIAN;
|
|
||||||
#end
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user