diff options
6 files changed, 45 insertions, 41 deletions
diff --git a/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs b/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs index 5449757..3035a62 100644 --- a/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs +++ b/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs | |||
@@ -148,7 +148,8 @@ namespace OpenSim.Framework.Statistics | |||
148 | /// cover situations where the inventory service accepts the request but never returns any data, since | 148 | /// cover situations where the inventory service accepts the request but never returns any data, since |
149 | /// we do not yet timeout this situation. | 149 | /// we do not yet timeout this situation. |
150 | /// </summary> | 150 | /// </summary> |
151 | public long InventoryServiceRetrievalFailures { get { return inventoryServiceRetrievalFailures; } } | 151 | /// <remarks>Commented out because we do not cache inventory at this point</remarks> |
152 | // public long InventoryServiceRetrievalFailures { get { return inventoryServiceRetrievalFailures; } } | ||
152 | 153 | ||
153 | /// <summary> | 154 | /// <summary> |
154 | /// Retrieve the total frame time (in ms) of the last frame | 155 | /// Retrieve the total frame time (in ms) of the last frame |
@@ -219,10 +220,10 @@ namespace OpenSim.Framework.Statistics | |||
219 | assetServiceRequestFailures++; | 220 | assetServiceRequestFailures++; |
220 | } | 221 | } |
221 | 222 | ||
222 | public void AddInventoryServiceRetrievalFailure() | 223 | // public void AddInventoryServiceRetrievalFailure() |
223 | { | 224 | // { |
224 | inventoryServiceRetrievalFailures++; | 225 | // inventoryServiceRetrievalFailures++; |
225 | } | 226 | // } |
226 | 227 | ||
227 | /// <summary> | 228 | /// <summary> |
228 | /// Register as a packet queue stats provider | 229 | /// Register as a packet queue stats provider |
@@ -328,13 +329,13 @@ Asset service request failures: {3}" + Environment.NewLine, | |||
328 | "Abnormal client thread terminations: {0}" + Environment.NewLine, | 329 | "Abnormal client thread terminations: {0}" + Environment.NewLine, |
329 | abnormalClientThreadTerminations)); | 330 | abnormalClientThreadTerminations)); |
330 | 331 | ||
331 | sb.Append(Environment.NewLine); | 332 | // sb.Append(Environment.NewLine); |
332 | sb.Append("INVENTORY STATISTICS"); | 333 | // sb.Append("INVENTORY STATISTICS"); |
333 | sb.Append(Environment.NewLine); | 334 | // sb.Append(Environment.NewLine); |
334 | sb.Append( | 335 | // sb.Append( |
335 | string.Format( | 336 | // string.Format( |
336 | "Initial inventory caching failures: {0}" + Environment.NewLine, | 337 | // "Initial inventory caching failures: {0}" + Environment.NewLine, |
337 | InventoryServiceRetrievalFailures)); | 338 | // InventoryServiceRetrievalFailures)); |
338 | 339 | ||
339 | sb.Append(Environment.NewLine); | 340 | sb.Append(Environment.NewLine); |
340 | sb.Append("FRAME STATISTICS"); | 341 | sb.Append("FRAME STATISTICS"); |
@@ -399,8 +400,8 @@ Asset service request failures: {3}" + Environment.NewLine, | |||
399 | AssetServiceRequestFailures)); | 400 | AssetServiceRequestFailures)); |
400 | args["abnormalClientThreadTerminations"] = OSD.FromString (String.Format ("{0:0.##}", | 401 | args["abnormalClientThreadTerminations"] = OSD.FromString (String.Format ("{0:0.##}", |
401 | abnormalClientThreadTerminations)); | 402 | abnormalClientThreadTerminations)); |
402 | args["InventoryServiceRetrievalFailures"] = OSD.FromString (String.Format ("{0:0.##}", | 403 | // args["InventoryServiceRetrievalFailures"] = OSD.FromString (String.Format ("{0:0.##}", |
403 | InventoryServiceRetrievalFailures)); | 404 | // InventoryServiceRetrievalFailures)); |
404 | args["Dilatn"] = OSD.FromString (String.Format ("{0:0.##}", timeDilation)); | 405 | args["Dilatn"] = OSD.FromString (String.Format ("{0:0.##}", timeDilation)); |
405 | args["SimFPS"] = OSD.FromString (String.Format ("{0:0.##}", simFps)); | 406 | args["SimFPS"] = OSD.FromString (String.Format ("{0:0.##}", simFps)); |
406 | args["PhyFPS"] = OSD.FromString (String.Format ("{0:0.##}", physicsFps)); | 407 | args["PhyFPS"] = OSD.FromString (String.Format ("{0:0.##}", physicsFps)); |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs index 5610c09..7b1aa2c 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs | |||
@@ -492,6 +492,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
492 | if ((Environment.TickCount & Int32.MaxValue) - udpClient.TickLastPacketReceived > 1000 * 60) | 492 | if ((Environment.TickCount & Int32.MaxValue) - udpClient.TickLastPacketReceived > 1000 * 60) |
493 | { | 493 | { |
494 | m_log.Warn("[LLUDPSERVER]: Ack timeout, disconnecting " + udpClient.AgentID); | 494 | m_log.Warn("[LLUDPSERVER]: Ack timeout, disconnecting " + udpClient.AgentID); |
495 | StatsManager.SimExtraStats.AddAbnormalClientThreadTermination(); | ||
495 | 496 | ||
496 | RemoveClient(udpClient); | 497 | RemoveClient(udpClient); |
497 | return; | 498 | return; |
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 1e2901b..1af8346 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -60,10 +60,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
60 | protected internal event PhysicsCrash UnRecoverableError; | 60 | protected internal event PhysicsCrash UnRecoverableError; |
61 | private PhysicsCrash handlerPhysicsCrash = null; | 61 | private PhysicsCrash handlerPhysicsCrash = null; |
62 | 62 | ||
63 | public event ObjectDuplicateDelegate OnObjectDuplicate; | ||
64 | public event ObjectCreateDelegate OnObjectCreate; | ||
65 | public event ObjectDeleteDelegate OnObjectRemove; | ||
66 | |||
67 | #endregion | 63 | #endregion |
68 | 64 | ||
69 | #region Fields | 65 | #region Fields |
@@ -404,9 +400,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
404 | if (attachToBackup) | 400 | if (attachToBackup) |
405 | sceneObject.AttachToBackup(); | 401 | sceneObject.AttachToBackup(); |
406 | 402 | ||
407 | if (OnObjectCreate != null) | ||
408 | OnObjectCreate(sceneObject); | ||
409 | |||
410 | lock (SceneObjectGroupsByFullID) | 403 | lock (SceneObjectGroupsByFullID) |
411 | SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject; | 404 | SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject; |
412 | 405 | ||
@@ -455,9 +448,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
455 | if ((grp.RootPart.Flags & PrimFlags.Physics) == PrimFlags.Physics) | 448 | if ((grp.RootPart.Flags & PrimFlags.Physics) == PrimFlags.Physics) |
456 | RemovePhysicalPrim(grp.PrimCount); | 449 | RemovePhysicalPrim(grp.PrimCount); |
457 | } | 450 | } |
458 | |||
459 | if (OnObjectRemove != null) | ||
460 | OnObjectRemove(Entities[uuid]); | ||
461 | 451 | ||
462 | lock (SceneObjectGroupsByFullID) | 452 | lock (SceneObjectGroupsByFullID) |
463 | SceneObjectGroupsByFullID.Remove(grp.UUID); | 453 | SceneObjectGroupsByFullID.Remove(grp.UUID); |
@@ -1979,9 +1969,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1979 | // required for physics to update it's position | 1969 | // required for physics to update it's position |
1980 | copy.AbsolutePosition = copy.AbsolutePosition; | 1970 | copy.AbsolutePosition = copy.AbsolutePosition; |
1981 | 1971 | ||
1982 | if (OnObjectDuplicate != null) | ||
1983 | OnObjectDuplicate(original, copy); | ||
1984 | |||
1985 | return copy; | 1972 | return copy; |
1986 | } | 1973 | } |
1987 | } | 1974 | } |
diff --git a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs index 95aa864..261029c 100644 --- a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs +++ b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs | |||
@@ -88,7 +88,7 @@ namespace OpenSim.Region.CoreModules.UDP.Linden | |||
88 | (mod, cmd) => MainConsole.Instance.Output(HandleImageQueuesClear(cmd))); | 88 | (mod, cmd) => MainConsole.Instance.Output(HandleImageQueuesClear(cmd))); |
89 | 89 | ||
90 | scene.AddCommand( | 90 | scene.AddCommand( |
91 | this, "show image queues", | 91 | this, "image queues show", |
92 | "image queues show <first-name> <last-name>", | 92 | "image queues show <first-name> <last-name>", |
93 | "Show the image queues (textures downloaded via UDP) for a particular client.", | 93 | "Show the image queues (textures downloaded via UDP) for a particular client.", |
94 | (mod, cmd) => MainConsole.Instance.Output(GetImageQueuesReport(cmd))); | 94 | (mod, cmd) => MainConsole.Instance.Output(GetImageQueuesReport(cmd))); |
@@ -293,7 +293,7 @@ namespace OpenSim.Region.CoreModules.UDP.Linden | |||
293 | private string GetImageQueuesReport(string[] showParams) | 293 | private string GetImageQueuesReport(string[] showParams) |
294 | { | 294 | { |
295 | if (showParams.Length < 5 || showParams.Length > 6) | 295 | if (showParams.Length < 5 || showParams.Length > 6) |
296 | return "Usage: show image queues <first-name> <last-name> [full]"; | 296 | return "Usage: image queues show <first-name> <last-name> [full]"; |
297 | 297 | ||
298 | string firstName = showParams[3]; | 298 | string firstName = showParams[3]; |
299 | string lastName = showParams[4]; | 299 | string lastName = showParams[4]; |
diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs index 68999fc..c6e8286 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs | |||
@@ -134,9 +134,18 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
134 | | CollisionCategories.Body | 134 | | CollisionCategories.Body |
135 | | CollisionCategories.Character | 135 | | CollisionCategories.Character |
136 | | CollisionCategories.Land); | 136 | | CollisionCategories.Land); |
137 | internal IntPtr Body = IntPtr.Zero; | 137 | /// <summary> |
138 | /// Body for dynamics simulation | ||
139 | /// </summary> | ||
140 | internal IntPtr Body { get; private set; } | ||
141 | |||
138 | private OdeScene _parent_scene; | 142 | private OdeScene _parent_scene; |
139 | internal IntPtr Shell = IntPtr.Zero; | 143 | |
144 | /// <summary> | ||
145 | /// Collision geometry | ||
146 | /// </summary> | ||
147 | internal IntPtr Shell { get; private set; } | ||
148 | |||
140 | private IntPtr Amotor = IntPtr.Zero; | 149 | private IntPtr Amotor = IntPtr.Zero; |
141 | private d.Mass ShellMass; | 150 | private d.Mass ShellMass; |
142 | 151 | ||
@@ -1018,6 +1027,13 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1018 | /// <param name="tensor"></param> | 1027 | /// <param name="tensor"></param> |
1019 | private void CreateOdeStructures(float npositionX, float npositionY, float npositionZ, float tensor) | 1028 | private void CreateOdeStructures(float npositionX, float npositionY, float npositionZ, float tensor) |
1020 | { | 1029 | { |
1030 | if (!(Shell == IntPtr.Zero && Body == IntPtr.Zero && Amotor == IntPtr.Zero)) | ||
1031 | { | ||
1032 | m_log.ErrorFormat( | ||
1033 | "[ODE CHARACTER]: Creating ODE structures for {0} even though some already exist. Shell = {1}, Body = {2}, Amotor = {3}", | ||
1034 | Name, Shell, Body, Amotor); | ||
1035 | } | ||
1036 | |||
1021 | int dAMotorEuler = 1; | 1037 | int dAMotorEuler = 1; |
1022 | // _parent_scene.waitForSpaceUnlock(_parent_scene.space); | 1038 | // _parent_scene.waitForSpaceUnlock(_parent_scene.space); |
1023 | if (CAPSULE_LENGTH <= 0) | 1039 | if (CAPSULE_LENGTH <= 0) |
@@ -1135,6 +1151,14 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1135 | /// </summary> | 1151 | /// </summary> |
1136 | internal void DestroyOdeStructures() | 1152 | internal void DestroyOdeStructures() |
1137 | { | 1153 | { |
1154 | // Create avatar capsule and related ODE data | ||
1155 | if (Shell == IntPtr.Zero || Body == IntPtr.Zero || Amotor == IntPtr.Zero) | ||
1156 | { | ||
1157 | m_log.ErrorFormat( | ||
1158 | "[ODE CHARACTER]: Destroying ODE structures for {0} even though some are already null. Shell = {1}, Body = {2}, Amotor = {3}", | ||
1159 | Name, Shell, Body, Amotor); | ||
1160 | } | ||
1161 | |||
1138 | // destroy avatar capsule and related ODE data | 1162 | // destroy avatar capsule and related ODE data |
1139 | if (Amotor != IntPtr.Zero) | 1163 | if (Amotor != IntPtr.Zero) |
1140 | { | 1164 | { |
@@ -1260,15 +1284,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1260 | { | 1284 | { |
1261 | if (m_tainted_isPhysical) | 1285 | if (m_tainted_isPhysical) |
1262 | { | 1286 | { |
1263 | // Create avatar capsule and related ODE data | ||
1264 | if (!(Shell == IntPtr.Zero && Body == IntPtr.Zero && Amotor == IntPtr.Zero)) | ||
1265 | { | ||
1266 | m_log.Warn("[ODE CHARACTER]: re-creating the following avatar ODE data for " + Name + ", even though it already exists - " | ||
1267 | + (Shell!=IntPtr.Zero ? "Shell ":"") | ||
1268 | + (Body!=IntPtr.Zero ? "Body ":"") | ||
1269 | + (Amotor!=IntPtr.Zero ? "Amotor ":"")); | ||
1270 | } | ||
1271 | |||
1272 | CreateOdeStructures(_position.X, _position.Y, _position.Z, m_tensor); | 1287 | CreateOdeStructures(_position.X, _position.Y, _position.Z, m_tensor); |
1273 | _parent_scene.AddCharacter(this); | 1288 | _parent_scene.AddCharacter(this); |
1274 | } | 1289 | } |
diff --git a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs index 228eca9..37daf46 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs | |||
@@ -1525,7 +1525,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1525 | chr.CollidingGround = false; | 1525 | chr.CollidingGround = false; |
1526 | chr.CollidingObj = false; | 1526 | chr.CollidingObj = false; |
1527 | 1527 | ||
1528 | // test the avatar's geometry for collision with the space | 1528 | // Test the avatar's geometry for collision with the space |
1529 | // This will return near and the space that they are the closest to | 1529 | // This will return near and the space that they are the closest to |
1530 | // And we'll run this again against the avatar and the space segment | 1530 | // And we'll run this again against the avatar and the space segment |
1531 | // This will return with a bunch of possible objects in the space segment | 1531 | // This will return with a bunch of possible objects in the space segment |