forked from Mirrorlandia_minetest/minetest
Add FPS limit to menu clouds
This commit is contained in:
parent
7f51b2da28
commit
5f88cd98ad
24
src/main.cpp
24
src/main.cpp
@ -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,9 +1690,29 @@ 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;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user