diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 7b90239d12..b5e2872f33 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs @@ -1389,30 +1389,30 @@ namespace OpenSim.Framework return null; } - #endregion FireAndForget Threading Pattern - /// - /// Environment.TickCount is an int but it counts all 32 bits so it goes positive - /// and negative every 24.9 days. This trims down TickCount so it doesn't wrap - /// for the callers. - /// This trims it to a 12 day interval so don't let your frame time get too long. - /// - /// - public static Int32 EnvironmentTickCount() - { - return Environment.TickCount & EnvironmentTickCountMask; - } - const Int32 EnvironmentTickCountMask = 0x3fffffff; - - /// - /// Environment.TickCount is an int but it counts all 32 bits so it goes positive - /// and negative every 24.9 days. Subtracts the passed value (previously fetched by - /// 'EnvironmentTickCount()') and accounts for any wrapping. - /// - /// subtraction of passed prevValue from current Environment.TickCount - public static Int32 EnvironmentTickCountSubtract(Int32 prevValue) - { - Int32 diff = EnvironmentTickCount() - prevValue; - return (diff >= 0) ? diff : (diff + EnvironmentTickCountMask + 1); + #endregion FireAndForget Threading Pattern + /// + /// Environment.TickCount is an int but it counts all 32 bits so it goes positive + /// and negative every 24.9 days. This trims down TickCount so it doesn't wrap + /// for the callers. + /// This trims it to a 12 day interval so don't let your frame time get too long. + /// + /// + public static Int32 EnvironmentTickCount() + { + return Environment.TickCount & EnvironmentTickCountMask; + } + const Int32 EnvironmentTickCountMask = 0x3fffffff; + + /// + /// Environment.TickCount is an int but it counts all 32 bits so it goes positive + /// and negative every 24.9 days. Subtracts the passed value (previously fetched by + /// 'EnvironmentTickCount()') and accounts for any wrapping. + /// + /// subtraction of passed prevValue from current Environment.TickCount + public static Int32 EnvironmentTickCountSubtract(Int32 prevValue) + { + Int32 diff = EnvironmentTickCount() - prevValue; + return (diff >= 0) ? diff : (diff + EnvironmentTickCountMask + 1); } } } diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 1e5f15a3b2..55d9c9cd47 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -1,4 +1,4 @@ -/* +/* * Copyright (c) Contributors, http://opensimulator.org/ * See CONTRIBUTORS.TXT for a full list of copyright holders. * @@ -430,7 +430,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Send the packet m_udpServer.SendPacketFinal(nextPacket); m_nextPackets[i] = null; - packetSent = true; + packetSent = true; this.PacketsSent++; } } diff --git a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs index b031f61c4d..50624a13bb 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs @@ -448,5 +448,11 @@ namespace OpenSim.Region.Framework.Scenes.Animation SendAnimPack(animIDs, sequenceNums, objectIDs); } + + public void Close() + { + m_animations = null; + m_scenePresence = null; + } } } diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 681291464a..e55acfe90b 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -790,37 +790,13 @@ namespace OpenSim.Region.Framework.Scenes /// public void SendPrimUpdates() { - m_perfMonMS = EnvironmentTickCount(); + m_perfMonMS = Util.EnvironmentTickCount(); m_sceneViewer.SendPrimUpdates(); - m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); + m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); } - /// - /// Environment.TickCount is an int but it counts all 32 bits so it goes positive - /// and negative every 24.9 days. This trims down TickCount so it doesn't wrap - /// for the callers. - /// This trims it to a 12 day interval so don't let your frame time get too long. - /// - /// - const Int32 EnvironmentTickCountMask = 0x3fffffff; - private static Int32 EnvironmentTickCount() { - return Environment.TickCount & EnvironmentTickCountMask; - } - - /// - /// Environment.TickCount is an int but it counts all 32 bits so it goes positive - /// and negative every 24.9 days. Subtracts the passed value (previously fetched by - /// 'EnvironmentTickCount()') and accounts for any wrapping. - /// - /// subtraction of passed prevValue from current Environment.TickCount - private static Int32 EnvironmentTickCountSubtract(Int32 prevValue) { - Int32 diff = EnvironmentTickCount() - prevValue; - return (diff >= 0) ? diff : (diff + EnvironmentTickCountMask + 1); - } - - #region Status Methods /// @@ -1209,7 +1185,7 @@ namespace OpenSim.Region.Framework.Scenes // return; //} - m_perfMonMS = EnvironmentTickCount(); + m_perfMonMS = Util.EnvironmentTickCount(); ++m_movementUpdateCount; if (m_movementUpdateCount < 1) @@ -1539,7 +1515,7 @@ namespace OpenSim.Region.Framework.Scenes m_scene.EventManager.TriggerOnClientMovement(this); - m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); + m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); } public void DoAutoPilot(uint not_used, Vector3 Pos, IClientAPI remote_client) @@ -2057,7 +2033,7 @@ namespace OpenSim.Region.Framework.Scenes return; } - m_perfMonMS = EnvironmentTickCount(); + m_perfMonMS = Util.EnvironmentTickCount(); Rotation = rotation; Vector3 direc = vec * rotation; @@ -2099,7 +2075,7 @@ namespace OpenSim.Region.Framework.Scenes // TODO: Add the force instead of only setting it to support multiple forces per frame? m_forceToApply = direc; m_isNudging = Nudging; - m_scene.StatsReporter.AddAgentTime(EnvironmentTickCount() - m_perfMonMS); + m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); } #endregion @@ -2168,7 +2144,7 @@ namespace OpenSim.Region.Framework.Scenes // server. if (remoteClient.IsActive) { - m_perfMonMS = EnvironmentTickCount(); + m_perfMonMS = Util.EnvironmentTickCount(); PhysicsActor actor = m_physicsActor; Vector3 velocity = (actor != null) ? actor.Velocity : Vector3.Zero; @@ -2181,7 +2157,7 @@ namespace OpenSim.Region.Framework.Scenes remoteClient.SendAvatarTerseUpdate(new SendAvatarTerseData(m_rootRegionHandle, (ushort)(m_scene.TimeDilation * ushort.MaxValue), LocalId, pos, velocity, Vector3.Zero, m_bodyRot, CollisionPlane, m_uuid, null, GetUpdatePriority(remoteClient))); - m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); + m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); m_scene.StatsReporter.AddAgentUpdates(1); } } @@ -2191,11 +2167,11 @@ namespace OpenSim.Region.Framework.Scenes /// public void SendTerseUpdateToAllClients() { - m_perfMonMS = EnvironmentTickCount(); + m_perfMonMS = Util.EnvironmentTickCount(); m_scene.ForEachClient(SendTerseUpdateToClient); - m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); + m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); } public void SendCoarseLocations() @@ -2215,7 +2191,7 @@ namespace OpenSim.Region.Framework.Scenes public void SendCoarseLocationsDefault(UUID sceneId, ScenePresence p) { - m_perfMonMS = EnvironmentTickCount(); + m_perfMonMS = Util.EnvironmentTickCount(); List CoarseLocations = new List(); List AvatarUUIDs = new List(); @@ -2251,7 +2227,7 @@ namespace OpenSim.Region.Framework.Scenes m_controllingClient.SendCoarseLocationUpdate(AvatarUUIDs, CoarseLocations); - m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); + m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); } public void CoarseLocationChange() @@ -2288,7 +2264,7 @@ namespace OpenSim.Region.Framework.Scenes /// public void SendInitialFullUpdateToAllClients() { - m_perfMonMS = EnvironmentTickCount(); + m_perfMonMS = Util.EnvironmentTickCount(); ScenePresence[] avatars = m_scene.GetScenePresences(); @@ -2314,14 +2290,14 @@ namespace OpenSim.Region.Framework.Scenes } m_scene.StatsReporter.AddAgentUpdates(avatars.Length); - m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); + m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); //Animator.SendAnimPack(); } public void SendFullUpdateToAllClients() { - m_perfMonMS = EnvironmentTickCount(); + m_perfMonMS = Util.EnvironmentTickCount(); // only send update from root agents to other clients; children are only "listening posts" List avatars = m_scene.GetAvatars(); @@ -2331,7 +2307,7 @@ namespace OpenSim.Region.Framework.Scenes } m_scene.StatsReporter.AddAgentUpdates(avatars.Count); - m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); + m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); Animator.SendAnimPack(); } @@ -2373,7 +2349,7 @@ namespace OpenSim.Region.Framework.Scenes /// public void SendAppearanceToAllOtherAgents() { - m_perfMonMS = EnvironmentTickCount(); + m_perfMonMS = Util.EnvironmentTickCount(); m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence) { @@ -2382,8 +2358,8 @@ namespace OpenSim.Region.Framework.Scenes SendAppearanceToOtherAgent(scenePresence); } }); - - m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); + + m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); } /// @@ -3200,11 +3176,13 @@ namespace OpenSim.Region.Framework.Scenes // I don't get it but mono crashes when you try to dispose of this timer, // unsetting the elapsed callback should be enough to allow for cleanup however. - //m_reprioritizationTimer.Dispose(); + // m_reprioritizationTimer.Dispose(); m_sceneViewer.Close(); RemoveFromPhysicalScene(); + m_animator.Close(); + m_animator = null; } public ScenePresence() diff --git a/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs b/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs index f92f440117..e368c2ae33 100644 --- a/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs +++ b/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs @@ -75,7 +75,7 @@ namespace OpenSim.Region.Framework.Scenes UnAckedBytes = 24, } - // Sending a stats update every 3 seconds + // Sending a stats update every 3 seconds- private int statsUpdatesEveryMS = 3000; private float statsUpdateFactor = 0; private float m_timeDilation = 0; @@ -240,7 +240,7 @@ namespace OpenSim.Region.Framework.Scenes sb[12].StatID = (uint)Stats.OtherMS; sb[12].StatValue = m_otherMS / statsUpdateFactor; - sb[13].StatID = (uint)Stats.InPacketsPerSecond; + sb[13].StatID = (uint)Stats.InPacketsPerSecond; sb[13].StatValue = (m_inPacketsPerSecond / statsUpdateFactor); sb[14].StatID = (uint)Stats.OutPacketsPerSecond; diff --git a/bin/IronMath.dll b/bin/IronMath.dll deleted file mode 100644 index 4960cc6653..0000000000 Binary files a/bin/IronMath.dll and /dev/null differ diff --git a/bin/IronPython.dll b/bin/IronPython.dll deleted file mode 100644 index 2efe7ef6e2..0000000000 Binary files a/bin/IronPython.dll and /dev/null differ diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index f9d9ca6b36..059a5691c6 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -342,7 +342,7 @@ ; The MessagingServer is a companion of the UserServer. It uses ; user_send_key and user_recv_key, too - ;messaging_server_url = "http://127.0.0.1:8006" + messaging_server_url = "http://127.0.0.1:8006" ; What is reported as the "X-Secondlife-Shard" ; Defaults to the user server url if not set @@ -1155,7 +1155,6 @@ safemode = false [VivoxVoice] - ; The VivoxVoice module will allow you to provide voice on your ; region(s). It uses the same voice technology as the LL grid and ; works with recent LL clients (we have tested 1.22.9.110075, so @@ -1296,6 +1295,15 @@ RootReprioritizationDistance = 10.0 ChildReprioritizationDistance = 20.0 + +[WebStats] +; View region statistics via a web page +; See http://opensimulator.org/wiki/FAQ#Region_Statistics_on_a_Web_Page +; Use a web browser and type in the "Login URI" + "/SStats/" +; For example- http://127.0.0.1:9000/SStats/ +; enabled=false + + ;; ;; These are defaults that are overwritten below in [Architecture]. ;; These defaults allow OpenSim to work out of the box with