Changeset - r27842:f010c32f7293
[Not reviewed]
master
0 2 0
Patric Stout - 10 months ago 2023-08-31 09:10:11
truebrain@openttd.org
Fix: [Emscripten] config not saved on exit game (#11248)

When changing a Game Option and pressing Exit Game, the changes
were not actually stored. This because the post-mainloop code
was never executed for Emscripten.
2 files changed with 20 insertions and 12 deletions:
0 comments (0 inline, 0 general)
src/openttd.cpp
Show inline comments
 
@@ -459,6 +459,22 @@ struct AfterNewGRFScan : NewGRFScanCallb
 
	}
 
};
 

	
 
void PostMainLoop()
 
{
 
	WaitTillSaved();
 

	
 
	/* only save config if we have to */
 
	if (_save_config) {
 
		SaveToConfig();
 
		SaveHotkeysToConfig();
 
		WindowDesc::SaveToConfig();
 
		SaveToHighScore();
 
	}
 

	
 
	/* Reset windowing system, stop drivers, free used memory, ... */
 
	ShutdownGame();
 
}
 

	
 
#if defined(UNIX)
 
extern void DedicatedFork();
 
#endif
 
@@ -785,18 +801,7 @@ int openttd_main(int argc, char *argv[])
 

	
 
	VideoDriver::GetInstance()->MainLoop();
 

	
 
	WaitTillSaved();
 

	
 
	/* only save config if we have to */
 
	if (_save_config) {
 
		SaveToConfig();
 
		SaveHotkeysToConfig();
 
		WindowDesc::SaveToConfig();
 
		SaveToHighScore();
 
	}
 

	
 
	/* Reset windowing system, stop drivers, free used memory, ... */
 
	ShutdownGame();
 
	PostMainLoop();
 
	return ret;
 
}
 

	
src/video/sdl2_v.cpp
Show inline comments
 
@@ -607,6 +607,9 @@ void VideoDriver_SDL_Base::LoopOnce()
 
		 * normally done at the end of the main loop for non-Emscripten.
 
		 * After that, Emscripten just halts, and the HTML shows a nice
 
		 * "bye, see you next time" message. */
 
		extern void PostMainLoop();
 
		PostMainLoop();
 

	
 
		emscripten_cancel_main_loop();
 
		emscripten_exit_pointerlock();
 
		/* In effect, the game ends here. As emscripten_set_main_loop() caused
0 comments (0 inline, 0 general)