Don't allow update timer to invoke another scene update if the previous is still active.

This commit is contained in:
Justin Clark-Casey (justincc)
2014-08-26 18:52:09 +01:00
parent bafa82eb12
commit b1ff78f4d8

View File

@@ -1443,8 +1443,15 @@ namespace OpenSim.Region.Framework.Scenes
}
}
private volatile bool m_isTimerUpdateRunning;
private void Update(object sender, ElapsedEventArgs e)
{
{
if (m_isTimerUpdateRunning)
return;
m_isTimerUpdateRunning = true;
// If the last frame did not complete on time, then immediately start the next update on the same thread
// and ignore further timed updates until we have a frame that had spare time.
while (!Update(1) && Active) {}
@@ -1455,6 +1462,8 @@ namespace OpenSim.Region.Framework.Scenes
m_sceneUpdateTimer = null;
m_isRunning = false;
}
m_isTimerUpdateRunning = false;
}
private void Maintenance()