Add FPS limit to menu clouds

This commit is contained in:
ShadowNinja 2013-03-17 11:53:04 -04:00 committed by kwolekr
parent 7f51b2da28
commit 5f88cd98ad

@ -1597,7 +1597,7 @@ int main(int argc, char *argv[])
if(skip_main_menu == false) if(skip_main_menu == false)
{ {
video::IVideoDriver* driver = device->getVideoDriver(); video::IVideoDriver* driver = device->getVideoDriver();
float fps_max = g_settings->getFloat("fps_max");
infostream<<"Waiting for other menus"<<std::endl; infostream<<"Waiting for other menus"<<std::endl;
while(device->run() && kill == false) while(device->run() && kill == false)
{ {
@ -1690,8 +1690,28 @@ int main(int argc, char *argv[])
// On some computers framerate doesn't seem to be // On some computers framerate doesn't seem to be
// automatically limited // 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); sleep_ms(25);
}
} }
infostream<<"Dropping main menu"<<std::endl; infostream<<"Dropping main menu"<<std::endl;