From 5f88cd98ada8fd59e4db68e969e17c09342c4ece Mon Sep 17 00:00:00 2001 From: ShadowNinja Date: Sun, 17 Mar 2013 11:53:04 -0400 Subject: [PATCH] Add FPS limit to menu clouds --- src/main.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index e5aa3017d..e4dbb8a54 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"<