Make Assets.load* use a background thread on native
This commit is contained in:
@@ -8,6 +8,7 @@ import lime.audio.AudioSource;
|
|||||||
import lime.audio.openal.AL;
|
import lime.audio.openal.AL;
|
||||||
import lime.audio.AudioBuffer;
|
import lime.audio.AudioBuffer;
|
||||||
import lime.graphics.Image;
|
import lime.graphics.Image;
|
||||||
|
import lime.system.WorkerThread;
|
||||||
import lime.text.Font;
|
import lime.text.Font;
|
||||||
import lime.utils.ByteArray;
|
import lime.utils.ByteArray;
|
||||||
import lime.utils.UInt8Array;
|
import lime.utils.UInt8Array;
|
||||||
@@ -223,13 +224,13 @@ class DefaultAssetLibrary extends AssetLibrary {
|
|||||||
|
|
||||||
var bytes:ByteArray = null;
|
var bytes:ByteArray = null;
|
||||||
var loader = Preloader.loaders.get (path.get (id));
|
var loader = Preloader.loaders.get (path.get (id));
|
||||||
|
|
||||||
if (loader == null) {
|
if (loader == null) {
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var data = loader.data;
|
var data = loader.data;
|
||||||
|
|
||||||
if (Std.is (data, String)) {
|
if (Std.is (data, String)) {
|
||||||
@@ -378,13 +379,13 @@ class DefaultAssetLibrary extends AssetLibrary {
|
|||||||
|
|
||||||
var bytes:ByteArray = null;
|
var bytes:ByteArray = null;
|
||||||
var loader = Preloader.loaders.get (path.get (id));
|
var loader = Preloader.loaders.get (path.get (id));
|
||||||
|
|
||||||
if (loader == null) {
|
if (loader == null) {
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var data = loader.data;
|
var data = loader.data;
|
||||||
|
|
||||||
if (Std.is (data, String)) {
|
if (Std.is (data, String)) {
|
||||||
@@ -472,6 +473,7 @@ class DefaultAssetLibrary extends AssetLibrary {
|
|||||||
public override function loadAudioBuffer (id:String, handler:AudioBuffer -> Void):Void {
|
public override function loadAudioBuffer (id:String, handler:AudioBuffer -> Void):Void {
|
||||||
|
|
||||||
#if (flash)
|
#if (flash)
|
||||||
|
|
||||||
if (path.exists (id)) {
|
if (path.exists (id)) {
|
||||||
|
|
||||||
var soundLoader = new Sound ();
|
var soundLoader = new Sound ();
|
||||||
@@ -482,13 +484,17 @@ class DefaultAssetLibrary extends AssetLibrary {
|
|||||||
handler (audioBuffer);
|
handler (audioBuffer);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
soundLoader.load (new URLRequest (path.get (id)));
|
soundLoader.load (new URLRequest (path.get (id)));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
handler (getAudioBuffer (id));
|
handler (getAudioBuffer (id));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
handler (getAudioBuffer (id));
|
handler (getAudioBuffer (id));
|
||||||
|
|
||||||
#end
|
#end
|
||||||
@@ -519,29 +525,38 @@ class DefaultAssetLibrary extends AssetLibrary {
|
|||||||
handler (getBytes (id));
|
handler (getBytes (id));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#elseif html5
|
#elseif html5
|
||||||
|
|
||||||
if (path.exists (id)) {
|
if (path.exists (id)) {
|
||||||
|
|
||||||
var loader = new URLLoader ();
|
var loader = new URLLoader ();
|
||||||
loader.dataFormat = BINARY;
|
loader.dataFormat = BINARY;
|
||||||
loader.onComplete.add (function (_):Void {
|
loader.onComplete.add (function (_):Void {
|
||||||
|
|
||||||
handler(loader.data);
|
|
||||||
|
|
||||||
});
|
|
||||||
loader.load (new URLRequest (path.get (id)));
|
|
||||||
|
|
||||||
|
handler (loader.data);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
loader.load (new URLRequest (path.get (id)));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
handler (getBytes (id));
|
handler (getBytes (id));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
handler (getBytes (id));
|
var worker = new WorkerThread ();
|
||||||
|
worker.doWork = function () {
|
||||||
|
|
||||||
|
var bytes = getBytes (id);
|
||||||
|
worker.sendUpdate (bytes);
|
||||||
|
|
||||||
|
}
|
||||||
|
worker.onUpdate.add (function (msg) handler (msg));
|
||||||
|
worker.run ();
|
||||||
|
|
||||||
#end
|
#end
|
||||||
|
|
||||||
@@ -570,26 +585,34 @@ class DefaultAssetLibrary extends AssetLibrary {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#elseif html5
|
#elseif html5
|
||||||
|
|
||||||
if (path.exists (id)) {
|
if (path.exists (id)) {
|
||||||
|
|
||||||
var image = new js.html.Image ();
|
var image = new js.html.Image ();
|
||||||
image.onload = function (_):Void {
|
image.onload = function (_):Void {
|
||||||
|
|
||||||
handler (Image.fromImageElement (image));
|
handler (Image.fromImageElement (image));
|
||||||
|
|
||||||
}
|
}
|
||||||
image.src = id;
|
image.src = id;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
handler (getImage (id));
|
handler (getImage (id));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
handler (getImage (id));
|
var worker = new WorkerThread ();
|
||||||
|
worker.doWork = function () {
|
||||||
|
|
||||||
|
var image = getImage (id);
|
||||||
|
worker.sendUpdate (image);
|
||||||
|
|
||||||
|
}
|
||||||
|
worker.onUpdate.add (function (msg) handler (msg));
|
||||||
|
worker.run ();
|
||||||
|
|
||||||
#end
|
#end
|
||||||
|
|
||||||
@@ -699,10 +722,11 @@ class DefaultAssetLibrary extends AssetLibrary {
|
|||||||
|
|
||||||
var loader = new URLLoader ();
|
var loader = new URLLoader ();
|
||||||
loader.onComplete.add (function (_):Void {
|
loader.onComplete.add (function (_):Void {
|
||||||
|
|
||||||
handler(loader.data);
|
handler (loader.data);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
loader.load (new URLRequest (path.get (id)));
|
loader.load (new URLRequest (path.get (id)));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user