mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-01 03:21:41 +00:00
Don't increase simulationTime while the game is minimized (Fixes #4211)
This commit is contained in:
parent
cf40d19d7d
commit
36f4f0ef85
@ -79,12 +79,14 @@ void OMW::Engine::executeLocalScripts()
|
||||
}
|
||||
}
|
||||
|
||||
void OMW::Engine::frame(float frametime)
|
||||
bool OMW::Engine::frame(float frametime)
|
||||
{
|
||||
try
|
||||
{
|
||||
mStartTick = mViewer->getStartTick();
|
||||
|
||||
mEnvironment.setFrameDuration(frametime);
|
||||
|
||||
// update input
|
||||
mEnvironment.getInputManager()->update(frametime, false);
|
||||
|
||||
@ -92,7 +94,7 @@ void OMW::Engine::frame(float frametime)
|
||||
// If we are not currently rendering, then RenderItems will not be reused resulting in a memory leak upon changing widget textures (fixed in MyGUI 3.3.2),
|
||||
// and destroyed widgets will not be deleted (not fixed yet, https://github.com/MyGUI/mygui/issues/21)
|
||||
if (!mEnvironment.getInputManager()->isWindowVisible())
|
||||
return;
|
||||
return false;
|
||||
|
||||
// sound
|
||||
if (mUseSound)
|
||||
@ -187,8 +189,9 @@ void OMW::Engine::frame(float frametime)
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cerr << "Error in framelistener: " << e.what() << std::endl;
|
||||
std::cerr << "Error in frame: " << e.what() << std::endl;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
OMW::Engine::Engine(Files::ConfigurationManager& configurationManager)
|
||||
@ -686,17 +689,9 @@ void OMW::Engine::go()
|
||||
frameTimer.setStartTick();
|
||||
dt = std::min(dt, 0.2);
|
||||
|
||||
bool guiActive = mEnvironment.getWindowManager()->isGuiMode();
|
||||
if (!guiActive)
|
||||
simulationTime += dt;
|
||||
|
||||
mViewer->advance(simulationTime);
|
||||
|
||||
mEnvironment.setFrameDuration(dt);
|
||||
|
||||
frame(dt);
|
||||
|
||||
if (!mEnvironment.getInputManager()->isWindowVisible())
|
||||
if (!frame(dt))
|
||||
{
|
||||
OpenThreads::Thread::microSleep(5000);
|
||||
continue;
|
||||
@ -709,6 +704,10 @@ void OMW::Engine::go()
|
||||
mEnvironment.getWorld()->updateWindowManager();
|
||||
|
||||
mViewer->renderingTraversals();
|
||||
|
||||
bool guiActive = mEnvironment.getWindowManager()->isGuiMode();
|
||||
if (!guiActive)
|
||||
simulationTime += dt;
|
||||
}
|
||||
|
||||
mEnvironment.limitFrameRate(frameTimer.time_s());
|
||||
|
@ -118,7 +118,7 @@ namespace OMW
|
||||
|
||||
void executeLocalScripts();
|
||||
|
||||
void frame (float dt);
|
||||
bool frame (float dt);
|
||||
|
||||
/// Load settings from various files, returns the path to the user settings file
|
||||
std::string loadSettings (Settings::Manager & settings);
|
||||
|
Loading…
Reference in New Issue
Block a user