Don't allow update timer to invoke another scene update if the previous is still active.
parent
bafa82eb12
commit
b1ff78f4d8
|
@ -1443,8 +1443,15 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private volatile bool m_isTimerUpdateRunning;
|
||||||
|
|
||||||
private void Update(object sender, ElapsedEventArgs e)
|
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
|
// 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.
|
// and ignore further timed updates until we have a frame that had spare time.
|
||||||
while (!Update(1) && Active) {}
|
while (!Update(1) && Active) {}
|
||||||
|
@ -1455,6 +1462,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_sceneUpdateTimer = null;
|
m_sceneUpdateTimer = null;
|
||||||
m_isRunning = false;
|
m_isRunning = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_isTimerUpdateRunning = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Maintenance()
|
private void Maintenance()
|
||||||
|
|
Loading…
Reference in New Issue