From: ShadowNinja Date: Sun, 17 Mar 2013 15:53:04 +0000 (-0400) Subject: Add FPS limit to menu clouds X-Git-Url: http://81.2.79.47:8989/gitweb/?a=commitdiff_plain;h=5f88cd98ada8fd59e4db68e969e17c09342c4ece;p=zefram%2Fminetest%2Fminetest_engine.git Add FPS limit to menu clouds --- diff --git a/src/main.cpp b/src/main.cpp index e5aa3017..e4dbb8a5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1597,7 +1597,7 @@ int main(int argc, char *argv[]) if(skip_main_menu == false) { video::IVideoDriver* driver = device->getVideoDriver(); - + float fps_max = g_settings->getFloat("fps_max"); infostream<<"Waiting for other menus"<run() && kill == false) { @@ -1690,8 +1690,28 @@ int main(int argc, char *argv[]) // On some computers framerate doesn't seem to be // automatically limited - if (!cloud_menu_background) + if (cloud_menu_background) { + // Time of frame without fps limit + float busytime; + u32 busytime_u32; + // not using getRealTime is necessary for wine + u32 time = device->getTimer()->getTime(); + if(time > lasttime) + busytime_u32 = time - lasttime; + else + busytime_u32 = 0; + busytime = busytime_u32 / 1000.0; + + // FPS limiter + u32 frametime_min = 1000./fps_max; + + if(busytime_u32 < frametime_min) { + u32 sleeptime = frametime_min - busytime_u32; + device->sleep(sleeptime); + } + } else { sleep_ms(25); + } } infostream<<"Dropping main menu"<