diff --git a/src/lime/utils/AssetLibrary.hx b/src/lime/utils/AssetLibrary.hx index 782bd4a433..e91e2f3a20 100644 --- a/src/lime/utils/AssetLibrary.hx +++ b/src/lime/utils/AssetLibrary.hx @@ -32,6 +32,7 @@ class AssetLibrary @:noCompletion private var cachedAudioBuffers = new Map(); @:noCompletion private var cachedBytes = new Map(); @:noCompletion private var cachedFonts = new Map(); + @:noCompletion private var cachedImageBytes = new Map(); @:noCompletion private var cachedImages = new Map(); @:noCompletion private var cachedText = new Map(); @:noCompletion private var classTypes = new Map>(); @@ -273,6 +274,13 @@ class AssetLibrary { return cachedImages.get(id); } + else if (cachedImageBytes.exists(id)) + { + var image = Image.fromBytes(cachedImageBytes.get(id)); + cachedImageBytes.remove(id); + cachedImages.set(id, image); + return image; + } else if (classTypes.exists(id)) { #if flash @@ -337,11 +345,11 @@ class AssetLibrary return switch (cast(type, AssetType)) { case null: - cachedBytes.exists(id) || cachedText.exists(id) || cachedImages.exists(id) + cachedBytes.exists(id) || cachedText.exists(id) || cachedImageBytes.exists(id) || cachedImages.exists(id) || cachedAudioBuffers.exists(id) || cachedFonts.exists(id); case IMAGE: - cachedImages.exists(id); + cachedImages.exists(id) || cachedImageBytes.exists(id); case MUSIC, SOUND: cachedAudioBuffers.exists(id); @@ -568,11 +576,11 @@ class AssetLibrary { return Future.withValue(Type.createInstance(classTypes.get(id), [])); } - else if (cachedBytes.exists(id)) + else if (cachedImageBytes.exists(id)) { - return Image.loadFromBytes(cachedBytes.get(id)).then(function(image) + return Image.loadFromBytes(cachedImageBytes.get(id)).then(function(image) { - cachedBytes.remove(id); + cachedImageBytes.remove(id); cachedImages.set(id, image); return Future.withValue(image); }); @@ -616,12 +624,14 @@ class AssetLibrary #if haxe4 cachedBytes.clear(); cachedFonts.clear(); + cachedImageBytes.clear(); cachedImages.clear(); cachedAudioBuffers.clear(); cachedText.clear(); #else cachedBytes = new Map(); cachedFonts = new Map(); + cachedImageBytes = new Map(); cachedImages = new Map(); cachedText = new Map(); classTypes = new Map>(); @@ -692,7 +702,7 @@ class AssetLibrary { #if !web case IMAGE: - cachedImages.set(id, Image.fromBytes(data)); + cachedImageBytes.set(id, data); case MUSIC, SOUND: cachedAudioBuffers.set(id, AudioBuffer.fromBytes(data)); case FONT: