diff options
author | Loïc Blot <nerzhul@users.noreply.github.com> | 2017-05-05 13:47:11 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-05 13:47:11 +0200 |
commit | 21e0a049f81eb0d34adaf45646b11569eeadec52 (patch) | |
tree | 735f6b234d0e3baa53b6d0fea1187dd3f06a2119 /src/game.cpp | |
parent | d6cf5450a897b00e5ed0d053f14108c94dfb3701 (diff) | |
download | minetest-21e0a049f81eb0d34adaf45646b11569eeadec52.tar.gz minetest-21e0a049f81eb0d34adaf45646b11569eeadec52.tar.bz2 minetest-21e0a049f81eb0d34adaf45646b11569eeadec52.zip |
Save minetest screen width/height options when modified (#5683)
* Save minetest screen width/height options when modified
* Add autosave_screensize setting (default true)
* Fix @SmallJoker comments
Diffstat (limited to 'src/game.cpp')
-rw-r--r-- | src/game.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/game.cpp b/src/game.cpp index be0cc8fd5..ace647456 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1629,10 +1629,26 @@ void Game::run() && client->checkPrivilege("fast"); #endif + irr::core::dimension2d<u32> previous_screen_size(g_settings->getU16("screenW"), + g_settings->getU16("screenH")); + while (device->run() && !(*kill || g_gamecallback->shutdown_requested || (server && server->getShutdownRequested()))) { + const irr::core::dimension2d<u32> ¤t_screen_size = + device->getVideoDriver()->getScreenSize(); + // Verify if window size has changed and save it if it's the case + // Ensure evaluating settings->getBool after verifying screensize + // First condition is cheaper + if (previous_screen_size != current_screen_size && + current_screen_size != irr::core::dimension2d<u32>(0,0) && + g_settings->getBool("autosave_screensize")) { + g_settings->setU16("screenW", current_screen_size.Width); + g_settings->setU16("screenH", current_screen_size.Height); + previous_screen_size = current_screen_size; + } + /* Must be called immediately after a device->run() call because it * uses device->getTimer()->getTime() */ |