[HTML5] Fix Mono builds (old emcc?)
Promise chaining the emscripten module `then` function breaks it badly,
causing an infinite loop.
I'm unsure about the source of the issue, but most likely at this point
is due to the old emscripten version (I remember very old html5 builds
having issue with promise chaining too).
With this commit, we no longer use the module as a promise, and
instantiate it using `Promise` objects directly for compatibility.
(cherry picked from commit ae3c9345cc
)
This commit is contained in:
parent
2bf0b2996a
commit
b402c1cb17
1 changed files with 16 additions and 12 deletions
|
@ -101,19 +101,23 @@ const Engine = (function () {
|
|||
}
|
||||
const me = this;
|
||||
function doInit(promise) {
|
||||
return promise.then(function (response) {
|
||||
return Godot(me.config.getModuleConfig(loadPath, new Response(response.clone().body, { 'headers': [['content-type', 'application/wasm']] })));
|
||||
}).then(function (module) {
|
||||
// Care! Promise chaining is bogus with old emscripten versions.
|
||||
// This caused a regression with the Mono build (which uses an older emscripten version).
|
||||
// Make sure to test that when refactoring.
|
||||
return new Promise(function (resolve, reject) {
|
||||
promise.then(function (response) {
|
||||
const cloned = new Response(response.clone().body, { 'headers': [['content-type', 'application/wasm']] });
|
||||
Godot(me.config.getModuleConfig(loadPath, cloned)).then(function (module) {
|
||||
const paths = me.config.persistentPaths;
|
||||
return module['initFS'](paths).then(function (err) {
|
||||
return Promise.resolve(module);
|
||||
});
|
||||
}).then(function (module) {
|
||||
module['initFS'](paths).then(function (err) {
|
||||
me.rtenv = module;
|
||||
if (me.config.unloadAfterInit) {
|
||||
Engine.unload();
|
||||
}
|
||||
return Promise.resolve();
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
preloader.setProgressFunc(this.config.onProgress);
|
||||
|
|
Loading…
Reference in a new issue