aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2014-08-26 18:13:00 +0100
committerJustin Clark-Casey (justincc)2014-08-26 18:13:38 +0100
commit42bb122232e1c170dd89ec45fbb19256ef09aa9e (patch)
tree7c4c621700886cbead70167ac5d7fb8fa8f37fc2 /OpenSim/Region
parentImplement experimental non-default mechanism to update scene via a timer rath... (diff)
downloadopensim-SC-42bb122232e1c170dd89ec45fbb19256ef09aa9e.zip
opensim-SC-42bb122232e1c170dd89ec45fbb19256ef09aa9e.tar.gz
opensim-SC-42bb122232e1c170dd89ec45fbb19256ef09aa9e.tar.bz2
opensim-SC-42bb122232e1c170dd89ec45fbb19256ef09aa9e.tar.xz
Fix frame times when updating scene on timer.
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs32
1 files changed, 17 insertions, 15 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 53001e9..de89cc2 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1426,6 +1426,7 @@ namespace OpenSim.Region.Framework.Scenes
1426 Maintenance, string.Format("Maintenance ({0})", RegionInfo.RegionName), ThreadPriority.Normal, false, true); 1426 Maintenance, string.Format("Maintenance ({0})", RegionInfo.RegionName), ThreadPriority.Normal, false, true);
1427 1427
1428 Watchdog.GetCurrentThreadInfo().AlarmIfTimeout = true; 1428 Watchdog.GetCurrentThreadInfo().AlarmIfTimeout = true;
1429 m_lastFrameTick = Util.EnvironmentTickCount();
1429 1430
1430 if (UpdateOnTimer) 1431 if (UpdateOnTimer)
1431 { 1432 {
@@ -1532,7 +1533,6 @@ namespace OpenSim.Region.Framework.Scenes
1532 1533
1533 float physicsFPS = 0f; 1534 float physicsFPS = 0f;
1534 int previousFrameTick, tmpMS; 1535 int previousFrameTick, tmpMS;
1535 int maintc = Util.EnvironmentTickCount();
1536 1536
1537 while (!m_shuttingDown && ((endFrame == null && Active) || Frame < endFrame)) 1537 while (!m_shuttingDown && ((endFrame == null && Active) || Frame < endFrame))
1538 { 1538 {
@@ -1672,27 +1672,29 @@ namespace OpenSim.Region.Framework.Scenes
1672 } 1672 }
1673 1673
1674 EventManager.TriggerRegionHeartbeatEnd(this); 1674 EventManager.TriggerRegionHeartbeatEnd(this);
1675 otherMS = tempOnRezMS + eventMS + backupMS + terrainMS + landMS;
1675 1676
1676 if (!UpdateOnTimer) 1677 if (!UpdateOnTimer)
1678 {
1677 Watchdog.UpdateThread(); 1679 Watchdog.UpdateThread();
1678 1680
1679 previousFrameTick = m_lastFrameTick; 1681 tmpMS = Util.EnvironmentTickCountSubtract(Util.EnvironmentTickCount(), m_lastFrameTick);
1680 m_lastFrameTick = Util.EnvironmentTickCount(); 1682 tmpMS = (int)(MinFrameTime * 1000) - tmpMS;
1681 tmpMS = Util.EnvironmentTickCountSubtract(m_lastFrameTick, maintc);
1682 tmpMS = (int)(MinFrameTime * 1000) - tmpMS;
1683 1683
1684 if (tmpMS > 0) 1684 if (tmpMS > 0)
1685 { 1685 {
1686 spareMS = tmpMS; 1686 spareMS = tmpMS;
1687
1688 if (!UpdateOnTimer)
1689 Thread.Sleep(tmpMS); 1687 Thread.Sleep(tmpMS);
1690 } 1688 }
1691 1689 }
1692 frameMS = Util.EnvironmentTickCountSubtract(maintc); 1690 else
1693 maintc = Util.EnvironmentTickCount(); 1691 {
1692 spareMS = Math.Max(0, (int)(MinFrameTime * 1000) - physicsMS2 - agentMS - physicsMS -otherMS);
1693 }
1694 1694
1695 otherMS = tempOnRezMS + eventMS + backupMS + terrainMS + landMS; 1695 previousFrameTick = m_lastFrameTick;
1696 frameMS = Util.EnvironmentTickCountSubtract(m_lastFrameTick);
1697 m_lastFrameTick = Util.EnvironmentTickCount();
1696 1698
1697 // if (Frame%m_update_avatars == 0) 1699 // if (Frame%m_update_avatars == 0)
1698 // UpdateInWorldTime(); 1700 // UpdateInWorldTime();