diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2020-06-14 22:57:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-14 22:57:32 +0200 |
commit | 6fa2a5ac145054a29268735316f14d2afe46b381 (patch) | |
tree | 976753603bc2abe701b77eb179d1a4b0826cc797 | |
parent | 79947dfef1db52462ce25f370696e3eb926fa627 (diff) | |
parent | 5c75cb01332988a1c7c8e0ab5b3c4176903900a4 (diff) |
Merge pull request #39537 from Faless/js/fs_sync_iteration
Immediately run first iteration after JS FS sync.
-rw-r--r-- | platform/javascript/javascript_main.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/platform/javascript/javascript_main.cpp b/platform/javascript/javascript_main.cpp index 740a72fafa..fd61c46e63 100644 --- a/platform/javascript/javascript_main.cpp +++ b/platform/javascript/javascript_main.cpp @@ -80,6 +80,9 @@ extern "C" EMSCRIPTEN_KEEPALIVE void main_after_fs_sync(char *p_idbfs_err) { Main::start(); os->get_main_loop()->init(); emscripten_resume_main_loop(); + // Immediately run the first iteration. + // We are inside an animation frame, we want to immediately draw on the newly setup canvas. + main_loop_callback(); } int main(int argc, char *argv[]) { @@ -91,14 +94,15 @@ int main(int argc, char *argv[]) { // Sync from persistent state into memory and then // run the 'main_after_fs_sync' function. /* clang-format off */ - EM_ASM( + EM_ASM({ FS.mkdir('/userfs'); FS.mount(IDBFS, {}, '/userfs'); FS.syncfs(true, function(err) { - ccall('main_after_fs_sync', null, ['string'], [err ? err.message : ""]) + requestAnimationFrame(function() { + ccall('main_after_fs_sync', null, ['string'], [err ? err.message : ""]); + }); }); - - ); + }); /* clang-format on */ return 0; |