Changeset - r27844:cf08d34d52cb
[Not reviewed]
master
0 3 0
glx22 - 11 months ago 2023-07-06 16:18:03
glx@openttd.org
Codechange: [Emscripten] Improve syncfs synchronisation on exit/abort
3 files changed with 12 insertions and 12 deletions:
0 comments (0 inline, 0 general)
os/emscripten/pre.js
Show inline comments
 
@@ -52,24 +52,26 @@ Module.preRun.push(function() {
 
    });
 

	
 
    window.openttd_syncfs_shown_warning = false;
 
    window.openttd_syncfs = function() {
 
    window.openttd_syncfs = function(callback) {
 
        /* Copy the virtual FS to the persistent storage. */
 
        FS.syncfs(false, function (err) { });
 
        FS.syncfs(false, function (err) {
 
            /* On first time, warn the user about the volatile behaviour of
 
             * persistent storage. */
 
            if (!window.openttd_syncfs_shown_warning) {
 
                window.openttd_syncfs_shown_warning = true;
 
                Module.onWarningFs();
 
            }
 

	
 
        /* On first time, warn the user about the volatile behaviour of
 
         * persistent storage. */
 
        if (!window.openttd_syncfs_shown_warning) {
 
            window.openttd_syncfs_shown_warning = true;
 
            Module.onWarningFs();
 
        }
 
            if (callback) callback();
 
        });
 
    }
 

	
 
    window.openttd_exit = function() {
 
        Module.onExit();
 
        window.openttd_syncfs(Module.onExit);
 
    }
 

	
 
    window.openttd_abort = function() {
 
        Module.onAbort();
 
        window.openttd_syncfs(Module.onAbort);
 
    }
 

	
 
    window.openttd_server_list = function() {
src/openttd.cpp
Show inline comments
 
@@ -118,7 +118,6 @@ void UserErrorI(const std::string &str)
 
	/* In effect, the game ends here. As emscripten_set_main_loop() caused
 
	 * the stack to be unwound, the code after MainLoop() in
 
	 * openttd_main() is never executed. */
 
	EM_ASM(if (window["openttd_syncfs"]) openttd_syncfs());
 
	EM_ASM(if (window["openttd_abort"]) openttd_abort());
 
#endif
 

	
src/video/sdl2_v.cpp
Show inline comments
 
@@ -615,7 +615,6 @@ void VideoDriver_SDL_Base::LoopOnce()
 
		/* In effect, the game ends here. As emscripten_set_main_loop() caused
 
		 * the stack to be unwound, the code after MainLoop() in
 
		 * openttd_main() is never executed. */
 
		EM_ASM(if (window["openttd_syncfs"]) openttd_syncfs());
 
		EM_ASM(if (window["openttd_exit"]) openttd_exit());
 
#endif
 
		return;
0 comments (0 inline, 0 general)