diff --git a/lime/system/System.hx b/lime/system/System.hx index b49fe29ec..f2f53a8fe 100644 --- a/lime/system/System.hx +++ b/lime/system/System.hx @@ -208,11 +208,15 @@ class System { __moduleNames.set (library, library); - #if neko - result = neko.Lib.loadLazy (library, method, args); - #elseif cpp - result = cpp.Lib.loadLazy (library, method, args); - #end + try { + + #if neko + result = neko.Lib.loadLazy (library, method, args); + #elseif cpp + result = cpp.Lib.loadLazy (library, method, args); + #end + + } catch (e:Dynamic) {} } else { @@ -220,6 +224,7 @@ class System { return cpp.Lib.load (library, method, args); #end + if (__moduleNames.exists (library)) { #if cpp @@ -290,7 +295,7 @@ class System { #if neko if (library == "lime" && method != "neko_init") { - loadNekoAPI (); + loadNekoAPI (lazy); } #end @@ -396,18 +401,18 @@ class System { #if neko - private static function loadNekoAPI ():Void { + private static function loadNekoAPI (lazy:Bool):Void { if (!__loadedNekoAPI) { - var init = load ("lime", "neko_init", 5); + var init = load ("lime", "neko_init", 5, lazy); if (init != null) { loaderTrace ("Found nekoapi @ " + __moduleNames.get ("lime")); init (function(s) return new String (s), function (len:Int) { var r = []; if (len > 0) r[len - 1] = null; return r; }, null, true, false); - } else { + } else if (!lazy) { throw ("Could not find NekoAPI interface."); @@ -421,7 +426,7 @@ class System { loaderTrace ("Found nekoapi @ " + __moduleNames.get ("lime-legacy")); init (function(s) return new String (s), function (len:Int) { var r = []; if (len > 0) r[len - 1] = null; return r; }, null, true, false); - } else { + } else if (!lazy) { throw ("Could not find NekoAPI interface.");